필요 모듈 설정
import numpy as np
import torch
텐서 타입 지정
Torch 데이터 선언 시, 사용할 수 있는 데이터 타입은
32-bit floating Point : FloatTensor
64-bit floating Point : DoubleTensor
16-bit floating Point : HalfTensor
8-bit integer : ByteTensor(unsigned), CharTensor(signed)
16-bit integer : ShortTensor
32-bit integer : IntTensor
64-bit integer : LongTensor
으로 선언을 할 수 있습니다.
보통, 계산을 하기 위한 데이터들에는 FloatTensor를 사용하고 Int형 숫자를 사용할 때는 LongTensor 사용하며, True/False 사용 시, ByteTensor를 사용합니다.
np_array = np.array([0., 1., 2., 3.])
float_torch = torch.FloatTensor(np_array)
double_torch = torch.DoubleTensor(np_array)
long_torch = torch.LongTensor(np_array)
int_torch = torch.IntTensor(np_array)
bool_torch = torch.ByteTensor([True, False])
print(float_torch)
print(double_torch)
print(long_torch)
print(int_torch)
print(bool_torch)
tensor([0., 1., 2., 3.])
tensor([0., 1., 2., 3.], dtype=torch.float64)
tensor([0, 1, 2, 3])
tensor([0, 1, 2, 3], dtype=torch.int32)
tensor([1, 0], dtype=torch.uint8)
덧셈(+) 및 뺄셈(-)
tc1 = torch.FloatTensor([1.,2.])
tc2 = torch.FloatTensor([3.,4.])
tc3 = torch.FloatTensor([5.])
tc4 = torch.FloatTensor([[6.],[7.]])
print(tc1)
print(tc2)
print(tc3)
print(tc4)
tensor([1., 2.])
tensor([3., 4.])
tensor([5.])
tensor([[6.],
[7.]])
print(tc1 + tc2) # 같은 차원 (vector + vector)
print(tc1 + tc3) # vector + scalar
print(tc1 + tc4) # (2 x 1) vector + (1 x 2) vector
print("---------------------")
print(tc1.add(tc2)) # 같은 차원 (vector + vector)
print(tc1.add(tc3)) # vector + scalar
print(tc1.add(tc4)) # (2 x 1) vector + (1 x 2) vector
다음과 같이 + 기호를 사용하여도 되고, add 함수를 사용해도 됩니다.
다른 차원 계산시 벡터를 맞춘 후에 계산을 합니다.
tensor([4., 6.])
tensor([6., 7.])
tensor([[7., 8.],
[8., 9.]])
---------------------
tensor([4., 6.])
tensor([6., 7.])
tensor([[7., 8.],
[8., 9.]])
뺄셈은 +대신 -사용, 혹은 add 대신 sub
실습은 패스!
tc_2d = torch.FloatTensor([[1., 2.], [3., 4.]])
print(tc_2d)
tensor([[1., 2.],
[3., 4.]])
print(tc_2d.sum())
print(tc_2d.sum(dim=0))
print(tc_2d.sum(dim=1))
첫 번째 : 모든 원소들의 합을 구한다.
두 번째 : dim=0 -> 세로 획을 그어서 각각 더하고 계산
세 번째 : dim=1 -> 가로 획을 그어서 각각 더하고 계산
tensor(10.)
tensor([4., 6.])
tensor([3., 7.])
곱셈(X)
덧셈과 작동 원리는 같습니다.
tc1 = torch.FloatTensor([1.,2.])
tc2 = torch.FloatTensor([3.,4.])
tc3 = torch.FloatTensor([5.])
tc4 = torch.FloatTensor([[6.],[7.]])
print(tc1)
print(tc2)
print(tc3)
print(tc4)
tensor([1., 2.])
tensor([3., 4.])
tensor([5.])
tensor([[6.],
[7.]])
print(tc1 * tc2) # 같은 차원 (vector + vector)
print(tc1 * tc3) # vector + scalar
print(tc1 * tc4) # (2 x 1) vector + (1 x 2) vector
print("---------------------")
print(tc1.mul(tc2)) # 같은 차원 (vector + vector)
print(tc1.mul(tc3)) # vector + scalar
print(tc1.mul(tc4)) # (2 x 1) vector + (1 x 2) vector
tensor([3., 8.])
tensor([ 5., 10.])
tensor([[ 6., 12.],
[ 7., 14.]])
---------------------
tensor([3., 8.])
tensor([ 5., 10.])
tensor([[ 6., 12.],
[ 7., 14.]])
평균(Mean) (/)
tc1 = torch.FloatTensor([1,2])
tc2 = torch.FloatTensor([3,4])
tc3 = torch.FloatTensor([5])
tc4 = torch.FloatTensor([[6],[7]])
print(tc1.mean())
print(tc2.mean())
print(tc3.mean())
print(tc4.mean())
tensor(1.5000)
tensor(3.5000)
tensor(5.)
tensor(6.5000)
tc_2d = torch.FloatTensor([[1., 2.], [3., 4.]])
print(tc_2d.mean())
print(tc_2d.mean(dim=0))
print(tc_2d.mean(dim=1))
첫 번째 : 모든 원소들의 평균을 구한다.
두 번째 : dim=0 -> 세로 획을 그어서 각각 더하고 평균 계산
세 번째 : dim=1 -> 가로 획을 그어서 각각 더하고 평균 계산
tensor(2.5000)
tensor([2., 3.])
tensor([1.5000, 3.5000])
반응형
'AI > PyTorch' 카테고리의 다른 글
PyTorch-실습 : 파이토치 로지스틱 회귀 구현(vs TF) (0) | 2020.09.16 |
---|---|
PyTorch-실습 : 파이토치 다중 선형 회귀 구현(vs TF) (0) | 2020.09.16 |
PyTorch-실습 : 파이토치 선형 회귀 구현(vs TF) (0) | 2020.09.16 |
PyTorch-실습 : Tensor 조작하기(2) (0) | 2020.09.16 |
PyTorch-실습 : NumPy & Torch (Tensor) (0) | 2020.09.16 |