반응형
Vector, Matrix, Tensor
- 1차원: 벡터
- 2차원: 행렬
- 3차원: 텐서
(이미지출처: boostcourse ai-tech pre-course) - 3차원 텐서의 구성:
(이미지출처: boostcourse ai-tech pre-course)- computer vision
- |t| = (batch_size, width, height)
- 첫번째 값이 세로, 두번째값이 가로, 세번째값이 깊이
- nlp
- |t| = (batchsize,length,dim)
- 첫번째 값이 세로, 두번째값이 가로, 세번째값이 깊이
- |t| = (batch_size, width, height)
- computer vision
PyTorch Tensor
1D Array
t = torch.FloatTensor([0.,1.,2.,3.,4.,5.,6.])
t.dim()
-> 1
t.shape
-> torch.Size([7])
t.size()
-> torch.Size([7])
t[0]
-> tensor(0.)
t[0:2]
-> tensor([0., 1.])
2D Tensor
t = torch.FloatTensor([[1.,2.,3.],[4.,5.,6.],[7.,8.,9.],[10.,11.,12.]])
t.dim()
-> 2
t.shape
-> torch.Size([4, 3])
t.size()
-> torch.Size([4, 3])
t[0][1]
-> tensor(2.)
t[:,1]
-> tensor([ 2., 5., 8., 11.])
Broadcasting
- matrix간 연산 할 때 덧셈뺄셈은 두 텐서간의 크기가 같아야함
m1 = torch.FloatTensor([[3,3]]) ->|m1|(1,2)
m2 = torch.FloatTensor([[3,2]]) ->|m2|(1,2)
m1+m2
-> tensor([[6., 5.]])
m1 = torch.FloatTensor([[3,3]]) ->|m1|(1,2)
m2 = torch.FloatTensor([5]) ->|m1|(1,)
m1+m2
-> tensor([[8., 8.]])
m1 = torch.FloatTensor([[1,3]]) ->|m1|(1,2)
m2 = torch.FloatTensor([[5],[6]]) ->|m1|(2,1)
m1+m2
-> tensor([[6., 8.],
[7., 9.]])
=> 설명
m1 = [[1,3],
[1,3]]
m2 = [[5,5],
[6,6]]
로 변형되어 계산됨
- 행렬곱과 원소의 곱은 다름
m1 = torch.FloatTensor([[1,2],[3,4]]) -> |m1| (2,2)
m2 = torch.FloatTensor([[1],[2]]) -> |m2| (2,1)
m1.matmul(m2)
-> tensor([[ 5.],
[11.]])
m1.mul(m2)
-> tensor([[1., 2.],
[6., 8.]])
m1*m2
-> tensor([[1., 2.],
[6., 8.]])
Mean
- 평균값
t = torch.FloatTensor([[1,2],[3,4]])
->
[[1,2],
[3,4]]
# 데이터 전체에 대한 평균값
t.mean()
-> tensor(2.5000)
# 열에 대한 평균값
t.mean(dim=0)
-> tensor([2., 3.])
# 행에대한 평균값
t.mean(dim=1)
-> tensor([1.5000, 3.5000])
SUM
- 덧셈
t = torch.FloatTensor([[1,2],[3,4]])
->
[[1,2],
[3,4]]
# 전체에 대한 합
t.sum()
-> tensor(10.)
# 열에대한 합
t.sum(dim=0)
-> tensor(4.,6.)
# 행에대한 합
t.sum(dim=1)
-> tensor(3.,7.)
Max, Argmax
- max(가장 큰값), argmax(가장 큰값의 인덱스값)
- return값으로 2개의 데이터를 받는데 첫번째가 max 두번째가 argmax값임
t = torch.FloatTensor([[1,2],[3,4]])
->
[[1,2],
[3,4]]
t.max()
-> tensor(4.)
t.max(dim=0)
-> torch.return_types.max(values=tensor([3., 4.]), indices=tensor([1, 1]))
# max값
t.max(dim=0)[0]
-> tensor([3., 4.])
# argmax값
t.max(dim=0)[1]
-> tensor([1, 1])
반응형
'부스트캠프 AI Tech 2기 > Precourse' 카테고리의 다른 글
Linear Regression (0) | 2021.07.29 |
---|---|
Tensor Manipulation 2 (0) | 2021.07.29 |
파이썬 시각화 툴 (4) | 2021.07.27 |
통계학 맛보기 (0) | 2021.07.26 |
확률론 맛보기 (0) | 2021.07.26 |