개발로 자기계발
article thumbnail
728x90

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개의 코드는 같은 결과를 볼 수 있다.

728x90
SMALL
profile

개발로 자기계발

@김잠봉

틀린부분이나 조언이 있다면 언제든 환영입니다:-)