PyTorch에서 모든 0이 아닌 값을 0으로 바꾸고 모든 0 값을 특정 값으로 바꾸는 방법
PyTorch에서 모든 0이 아닌 값을 0으로 바꾸고 모든 0 값을 특정 값으로 바꾸는 방법
torch.where() 함수 사용
torch.where()
함수는 조건에 따라 두 개의 텐서를 선택적으로 반환하는 함수입니다. 다음 코드는 torch.where()
함수를 사용하여 모든 0이 아닌 값을 0으로 바꾸고 모든 0 값을 특정 값 new_value
로 바꾸는 방법을 보여줍니다.
import torch
# 텐서 생성
x = torch.tensor([[1, 2, 0], [0, 4, 5], [6, 0, 8]])
# 특정 값 설정
new_value = 10
# 모든 0이 아닌 값을 0으로, 0 값을 new_value로 바꾸기
y = torch.where(x != 0, torch.zeros_like(x), torch.full_like(x, new_value))
# 결과 출력
print(y)
결과:
tensor([[0., 0., 0.],
[0., 4., 5.],
[6., 0., 8.]])
torch.logical_not() 및 torch.mul() 함수 사용
torch.logical_not()
함수는 텐서의 모든 값을 논리적으로 반전합니다. torch.mul()
함수는 두 개의 텐서를 곱합니다. 다음 코드는 torch.logical_not()
및 torch.mul()
함수를 사용하여 모든 0이 아닌 값을 0으로 바꾸고 모든 0 값을 특정 값 new_value
로 바꾸는 방법을 보여줍니다.
import torch
# 텐서 생성
x = torch.tensor([[1, 2, 0], [0, 4, 5], [6, 0, 8]])
# 특정 값 설정
new_value = 10
# 모든 0이 아닌 값을 0으로, 0 값을 new_value로 바꾸기
y = torch.mul(torch.logical_not(x), torch.full_like(x, new_value))
# 결과 출력
print(y)
tensor([[0., 0., 0.],
[0., 4., 5.],
[6., 0., 8.]])
두 방법 모두 동일한 결과를 제공합니다. 원하는 방법을 선택하여 사용하면 됩니다.
참고
예제 코드
torch.where() 함수 사용
import torch
# 텐서 생성
x = torch.tensor([[1, 2, 0], [0, 4, 5], [6, 0, 8]])
# 특정 값 설정
new_value = 10
# 모든 0이 아닌 값을 0으로, 0 값을 new_value로 바꾸기
y = torch.where(x != 0, torch.zeros_like(x), torch.full_like(x, new_value))
# 결과 출력
print(y)
tensor([[0., 0., 0.],
[0., 4., 5.],
[6., 0., 8.]])
torch.logical_not() 및 torch.mul() 함수 사용
import torch
# 텐서 생성
x = torch.tensor([[1, 2, 0], [0, 4, 5], [6, 0, 8]])
# 특정 값 설정
new_value = 10
# 모든 0이 아닌 값을 0으로, 0 값을 new_value로 바꾸기
y = torch.mul(torch.logical_not(x), torch.full_like(x, new_value))
# 결과 출력
print(y)
tensor([[0., 0., 0.],
[0., 4., 5.],
[6., 0., 8.]])
설명:
x != 0
: 텐서x
의 모든 값이 0인지 확인합니다. 0이 아닌 값은True
로, 0인 값은False
로 반환됩니다.torch.zeros_like(x)
: 텐서x
와 같은 크기와 형태를 가진 0으로 채워진 텐서를 생성합니다.torch.full_like(x, new_value)
: 텐서x
와 같은 크기와 형태를 가진new_value
로 채워진 텐서를 생성합니다.torch.where(condition, x, y)
: 조건condition
에 따라 텐서x
와y
중 하나를 선택합니다. 조건이True
이면x
를,False
이면y
를 반환합니다.torch.logical_not(x)
: 텐서x
의 모든 값을 논리적으로 반전합니다. 0이 아닌 값은False
로, 0인 값은True
로 반환됩니다.torch.mul(x, y)
: 텐서x
와y
를 곱합니다.
참고:
torch.where()
함수는 조건에 따라 두 개의 텐서를 선택적으로 반환하는 함수입니다.torch.logical_not()
함수는 텐서의 모든 값을 논리적으로 반전합니다.torch.mul()
함수는 두 개의 텐서를 곱합니다.
PyTorch에서 모든 0이 아닌 값을 0으로 바꾸고 모든 0 값을 특정 값으로 바꾸는 대체 방법
torch.abs() 및 torch.where() 함수 사용
import torch
# 텐서 생성
x = torch.tensor([[1, 2, 0], [0, 4, 5], [6, 0, 8]])
# 특정 값 설정
new_value = 10
# 모든 0이 아닌 값을 0으로, 0 값을 new_value로 바꾸기
y = torch.where(torch.abs(x) > 0, torch.zeros_like(x), torch.full_like(x, new_value))
# 결과 출력
print(y)
tensor([[0., 0., 0.],
[0., 4., 5.],
[6., 0., 8.]])
torch.isnan() 및 torch.where() 함수 사용
import torch
# 텐서 생성
x = torch.tensor([[1, 2, 0], [0, 4, 5], [6, 0, 8]])
# 특정 값 설정
new_value = 10
# 모든 0이 아닌 값을 0으로, 0 값을 new_value로 바꾸기
y = torch.where(torch.isnan(x), torch.zeros_like(x), torch.full_like(x, new_value))
# 결과 출력
print(y)
tensor([[0., 0., 0.],
[0., 4., 5.],
[6., 0., 8.]])
torch.clamp() 함수 사용
import torch
# 텐서 생성
x = torch.tensor([[1, 2, 0], [0, 4, 5], [6, 0, 8]])
# 특정 값 설정
new_value = 10
# 모든 0이 아닌 값을 0으로, 0 값을 new_value로 바꾸기
y = torch.clamp(x, min=0, max=0) + torch.full_like(x, new_value)
# 결과 출력
print(y)
tensor([[0., 0., 0.],
[0., 4., 5.],
[6., 0., 8.]])
torch.abs()
함수는 텐서의 모든 값의 절댓값을 반환합니다.torch.isnan()
함수는 텐서의 모든 값이 NaN(Not a Number)인지 확인합니다.torch.clamp()
함수는 텐서의 모든 값을 특정 범위 내로 제한합니다.
pytorch