Rand
random_tensor = torch.rand(1, 3, 4)
random_tensor = torch.rand(3, 4)
random_tensor = torch.rand(4)
random_tensor = torch.rand(1, 1, 3, 4)
random_tensor = torch.rand(10, 10, 10)
rand() 함수를 통해 원하는 차원을 만들어 낼 수가 있다.
Zeros
zeros = torch.zeros(size=(3,4))
zeros = torch.zeros(size=(3, 3,4))
zeros = torch.zeros(size=(3))
zeros() 함수를 통해 0의 값을 같은 차원을 만들 수 있다.
* size는 default 값이라 적어도 되고 안 적어도 된다.
텐서끼리 곱하기도 가능하다.
zeros*random_tensor
Ones
ones = torch.ones(size=(3,4))
ones() 함수를 통해 1의 값을 같는 차원을 만들 수 있다.
ones.dtype
torch.float32
기본 데이터의 유형은 float32이다.
arrange
one_to_ten = torch.arange(start=1, end=11, step=1)
# range()함수는 사용자 경고가 나온다.
one_to_ten = torch.range(start=1, end=11, step=1)
범위를 지정해서 1차원의 값을 없을 수 있다.
Zeros_like
ten_zeros = torch.zeros_like(input=one_to_ten)
input으로 넣은 값의 데이터가 0으로 변경된다.
DataType
float_32_tensor = torch.tensor([3.0, 6.0, 9.0], dtype=None, device=None, requires_grad=False)
dtype => float_32_tensor의 데이터 타입은 기본값인 float32가 된다.
device => float_32_tensor는 기본적으로 CPU 메모리 상에 생성됩니다.('cuda'을 넣게 되면 GPU 할당)
requires_grad => float_32_tensor는 자동 미분을 위한 그래디언트(gradient) 계산을 비활성화한 상태다.
※ 데이터 타입을 변경하고 싶다면?
float_16_tensor = torch.tensor([3.0, 6.0, 9.0], dtype=torch.float16)
int_32_tensor = torch.tensor([3,6,9], dtype=torch.int32)
int_long_tensor = torch.tensor([3,6,9], dtype=torch.long)
dtype에 지정해서 타입을 변경하거나
float_16_tensor = float_32_tensor.type(torch.float16)
tpye() 함수를 통해서 타입을 변경할 수 있다.
※ 만약 곱셈계산에서 타입 일치를 하지 않는다면?
float_32_tensor*float_16_tensor
float_32_tensor*int_32_tensor
float_32_tensor*int_long_tensor
결론부터 말하자면
float_32_tensor와 int_32_tensor를 곱하면, int_32_tensor의 값이 자동으로 float_32_tensor의 데이터 타입인 float32로 변환되어 곱셈이 수행된다.
따라서, float_32_tensor와 int_32_tensor를 곱하더라도 문법적으로는 문제가 없지만,
데이터 정확도에 영향을 미칠 가능성이 있으므로, 두 텐서의 데이터 타입을 일치시키는 것이 좋다.
Information
some_tensor = torch.rand(3, 4)
print(some_tensor)
print(f"Datatype of tensor: {some_tensor.dtype}")
print(f"Shape of tensor: {some_tensor.shape}")
print(f"Device of tensor: {some_tensor.device}")
tensor([[0.1839, 0.3469, 0.1077, 0.2736],
[0.5790, 0.6676, 0.8781, 0.5410],
[0.3684, 0.7661, 0.1636, 0.2027]])
Datatype of tensor: torch.float32
Shape of tensor: torch.Size([3, 4])
Device of tensor: cpu
tensor의 타입, 크기, 디바이스의 정보를 볼 수 있다.
some_tensor.size(), some_tensor.shape
2개의 코드는 같은 결과를 볼 수 있다.
'인공지능 > PyTorch' 카테고리의 다른 글
PyTorch - 파이토치 기초 (5) (0) | 2023.04.23 |
---|---|
PyTorch - 파이토치 기초 (4) (2) | 2023.04.23 |
PyTorch - 텐서란? (2) (0) | 2023.04.18 |
PyTorch - 파이토치란? (1) (0) | 2023.04.17 |
PyTorch - 동적 계산 그래프(dynamic computation graph) (0) | 2023.04.17 |