import torch
import numpy as np
- torch 텐서 작업은 numpy 텐서작업과 비슷하다!
# numpy to torch
num = np.array([[1,2,3], [4,5,6]])
tor = torch.FloatTensor(num)
print(num)
print(tor)
[[1 2 3] [4 5 6]] tensor([[1., 2., 3.], [4., 5., 6.]])
- numpy 어레이로 선언하고 torch.FloatTensor 이용해 torch형 실수텐서 생성!
t = torch.FloatTensor([0., 1., 2., 3., 4., 5., 6.])
print(t) # tensor([0., 1., 2., 3., 4., 5., 6.])
t.dim() # 1차원
t.shape # torch.Size([7])
t.size() # torch.Size([7])
A,B 행렬끼리의 연산 주의할 점
- 두 행렬의 크기가 같으면 덧셈,뺄셈 가능
- A의 마지막 차원과 B의 첫번째 차원이 일치해야 덧셈 가능
브로드캐스팅이 자동으로 크기 맞춰준다
# Vector + scalar
m1 = torch.FloatTensor([[1, 2]])
m2 = torch.FloatTensor([3]) # [3] -> [3, 3]
print(m1 + m2) # tensor([[4., 5.]])
# 2 x 1 Vector + 1 x 2 Vector
m1 = torch.FloatTensor([[1, 2]])
m2 = torch.FloatTensor([[3], [4]])
print(m1 + m2)
# tensor([[4., 5.],
# [5., 6.]])
행렬곱셈(matmul) != 원소곱셈(mul)
mul -> 변수에 변화 반영 x
mul_ -> 변수에 변화 반영 o
m1 = torch.FloatTensor([[1,2], [3,4]])
m2 = torch.FloatTensor([[1], [2]])
m3 = m1.mul(m2)
print(m3)
tensor([[1., 2.], [6., 8.]])
m3 = m1.matmul(m2)
# [1 2] * [1]
# [3 4] [2]
print(m3)
tensor([[ 5.], [11.]])
# 평균 구하기
s1 = torch.FloatTensor([[1., 2.],[6., 8.]])
s1.mean() # tensor(4.2500)
# 행끼리 (다른 차원과의) 평균
s1.mean(dim=0) # tensor([3.5000, 5.0000]
# 열끼리 (같은 차원과의) 평균
s1.mean(dim=1) # tensor([1.5000, 7.0000])
# view를 이용해 2차원으로 변경
# .view([-1, 3]) ->
v1 = torch.FloatTensor([[[1,2,3], [10,20,30], [100,200,300]],
[[4,5,6], [40,50,60], [400, 500, 600]]])
v1 = v1.view([-1, 3])
view 적용 전 :
tensor([[[ 1., 2., 3.],
[ 10., 20., 30.],
[100., 200., 300.]],
[[ 4., 5., 6.],
[ 40., 50., 60.],
[400., 500., 600.]]])
torch.Size([2, 3, 3])
view 적용 :
tensor([ [ 1., 2., 3.],
[ 10., 20., 30.],
[100., 200., 300.],
[ 4., 5., 6.],
[ 40., 50., 60.],
[400., 500., 600.] ])
torch.Size([6, 3])
# 텐서 관련 함수
torch.cat([x, y]) -> x와 y 연결해서 합쳐줌
torch.stack([x, y, z]) -> x,y,z 연결하는 또다른 방법
torch.ones_like(x) -> x와 동일한 크기로 1로만 채워진 텐서 생성
'전공 과목 이수2👨💻 > 딥러닝' 카테고리의 다른 글
[혼공머] 5강. 데이터 전처리 (0) | 2022.01.21 |
---|---|
[혼공머] 4강. 훈련 세트와 테스트 세트 (0) | 2022.01.20 |
[혼공머] 3강.마켓과 머신러닝 / knn (0) | 2022.01.18 |
ImageNet 신경망 불러와서 이미지 학습,분류 하기 (0) | 2022.01.16 |
CNN : 합성곱 신경망(컨볼루션 신경망) (0) | 2022.01.02 |
신경전이학습을 통해 내 사진 변형하기 (Neural Style Transfer) (0) | 2021.02.06 |