PyTorch Manipulation I¶
Import¶
In [1]:
import numpy as np
import torch
In [2]:
t=np.array([0.,1.,2.,3.,4.,5.,6.])
t
Out[2]:
In [3]:
# array차원
print('Rank of t:',t.ndim)
# array모양
print('Shape of t:',t.shape)
In [4]:
# 원소 인덱싱
print('t[0] t[1] t[-1] = ',t[0],t[1],t[-1])
# 원소 슬라이싱
print('t[2:5] t[4:-1] = ',t[2:5],t[4:-1])
print('t[:2] t[3:] = ',t[2:],t[3:])
2D Array with NumPy¶
In [5]:
t=np.array([[1.,2.,3.],[4.,5.,6.],[7.,8.,9.],[10.,11.,12.]])
print(t)
In [6]:
print('Rank of t: ', t.ndim)
print('Shape of t: ',t.shape)
In [7]:
t=torch.FloatTensor([0.,1.,2.,3.,4.,5.,6.])
print(t)
In [8]:
# 차원
print(t.dim())
# 모양
print(t.shape)
print(t.size())
print(t[0],t[1],t[-1])
print(t[2:5],t[4:-1])
print(t[:2],t[3:])
2D Array with PyTorch¶
In [9]:
t=torch.FloatTensor([[1.,2.,3.],[4.,5.,6.],[7.,8.,9.],[10.,11.,12.]])
print(t)
In [10]:
# 차원
print(t.dim())
# 모양
print(t.size())
print(t[:,1])
print(t[:,1].size())
print(t[:,:-1])
In [11]:
# Same shape
m1=torch.FloatTensor([3,3])
m2=torch.FloatTensor([2,2])
print(m1+m2)
In [12]:
# Vector + Scalar
m1=torch.FloatTensor([1,2])
m2=torch.FloatTensor([3])
print(m1+m2)
In [13]:
# 2x1 Vector + 1x2 Vector
m1=torch.FloatTensor([[1,2]])
m2=torch.FloatTensor([[3],[4]])
print(m1+m2)
- 모양이 맞지 않아도 에러가 발생하지 않기때문에 Broadcsting을 사용할 때는 주의가 필요하다.
In [14]:
print()
print('-'*15)
print('Mul vs Matmul')
print('-'*15)
# Matmul
m1=torch.FloatTensor([[1,2],[3,4]])
m2=torch.FloatTensor([[1],[2]])
print('Shape of Matrix 1: ',m1.shape) # 2 x 2
print('Shape of Matrix 2: ',m2.shape) # 2 x 1
print(m1.matmul(m2)) # 2 x 1
# Mul
m1=torch.FloatTensor([[1,2],[3,4]])
m2=torch.FloatTensor([[1],[2]])
print('Shape of Matrix 1: ',m1.shape) # 2 x 2
print('Shape of Matrix 2: ',m2.shape) # 2 x 1
print(m1*m2)
print(m1.mul(m2)) # 2 x 2
In [15]:
t=torch.FloatTensor([1,2])
print(t.mean())
In [16]:
# Can't use mean() on integers
t= torch.LongTensor([1,2])
try:
print(t.mean())
except Exception as exc:
print(exc)
t.mean
을 사용하게 되면 모든 요소들에 대한 평균을 구한다.
dim
인자를 정해주면 해당 차원의 원소들의 평균을 구해 준다.
In [17]:
t= torch.FloatTensor([[1,2],[3,4]])
print(t)
In [18]:
print(t.mean())
print(t.mean(dim=0))
print(t.mean(dim=1))
print(t.mean(dim=-1))
dim
은 해당 차원을 제거한다는 의미가 됩니다.- 0은 첫번째 차원으로 '행'을 의미하고, 1은 두번째 차원으로 '열'을 의미합닏.
In [19]:
t= torch.FloatTensor([[1,2],[3,4]])
print(t)
In [20]:
print(t.sum())
print(t.sum(dim=0))
print(t.sum(dim=1))
print(t.sum(dim=-1))
In [21]:
t= torch.FloatTensor([[1,4],[2,3]])
print(t)
max
에 인자가 없다면 모든 원소중에서 가장 큰 값을 반환합니다.
In [22]:
print(t.max())
max
연산자는 2개의 값을 반환한다. 첫번째 값은 최댓값, 두번째 값은 최댓값을 가지는 원소의 인덱스를 반환한다.
In [23]:
print(t.max(dim=0))
print('Max: ',t.max(dim=0)[0])
print('Argmax: ',t.max(dim=0)[1])
In [24]:
print(t.max(dim=1))
print(t.max(dim=-1))
'AI > 파이토치로 시작하는 딥러닝 기초' 카테고리의 다른 글
도커환경설정 (0) | 2021.01.18 |
---|