지난 글에 이어서 numpy가 아닌 pytorch에서 tensor를 다룰 수 있는 함수들에 대해 정리해보았습니다.
tensor에 대한 개념이 익숙하지 않으신 분들은 해당 글을 먼저 읽고 오시는 것을 추천드립니다!
https://kyull-it.tistory.com/158
tensor 생성하기
import torch
torch.FloatTensor( ) # np.array( ) 와 같은 함수.
# torch.Tensor — PyTorch 2.0 documentation
torch.FloatTensor(t) # t = np.array( ) 일 때, 파이토치 텐서로 변환 가능.
0 또는 1으로만 이루어진 tensor 생성방법
torch.ones_like( t ) # 텐서t과 같은 사이즈의 1로 채워진 텐서를 출력함.
torch.zeros_like( t ) # 0
torch.ones( size=[ ] ) # 사이즈에 따라 1로 채워진 텐서를 출력
torch.zeros( size=[ ] ) # 0
tensor 속성 확인하기
t.dim # 텐서의 차원을 표시
t.shape # 텐서의 형태를 ( , ) 튜플 형태로 표시
t.size # 텐서의 크기를 표시 = 원소의 개수
세부 속성들
t.mean() # 텐서의 모든 원소에 대한 평균
t.mean(dim=0) # 텐서의 차원 제거와 함께 평균 구하기. dim=0 은 shape의 가장 첫 차원을 말함.
t.sum(dim=None) # 텐서의 모든 원소에 대한 합계. (dim 설정할 경우 차원 제거 가능)
t.max(dim=None) # 텐서의 모든 원소에 대한 최대값 및 index 출력. (dim 설정할 경우 차원 제거 가능)
t.argmax(dim=None) # 텐서의 모든 원소에 대한 최대값이 있는 index만 출력. (dim 설정할 경우 차원 제거 가능)
tensor의 곱
m1.matmul(m2) # m1 m2 - Matrix Multiplication (내적을 통한 행렬의 곱셈)
m1.mul(m2) # m1 m2 - element-wise Multiplication (행렬의 원소별 곱셈)
tensor의 형태 변형, 변환
t.view( [shape] ) # 텐서의 형태 변경. numpy의 reshape역할. 3차원→3차원, 2차원 가능
t.squeeze( ) # 텐서의 차원이 1인 경우. 1인 차원을 제거함.
t.unsqueeze( dim=number ) # 텐서의 차원을 number위치에 1차원 더 추가해줌.
tensor 합치기. 연결하기. 병합.
torch.cat([t1, t2, t3,,,,], dim=0) # 여러 텐서들을 연결(concatenate) - 각 텐서를 squeeze하고 연결하기 때문에, 텐서의 차원이 하나 줄어든다.
torch.stack([t1, t2, t3,,,,], dim=0) # 여러 텐서들을 연결(concatenate) - squeeze하지 않고, 그대로 연결하기 때문에 더 유용하게 쓰인다고 함.
추가적인 꿀팁
- 브로드 캐스팅 (Broadcasting)
두 텐서의 차원이 서로 다를 때에도 연산을 할 수 있도록 해주는 기능.
* A텐서 + A텐서보다 차원이 작은 텐서 ==> 연산이 가능하다.
* ex. scalar (array) + vector 또는 scalar (array) + matrix - 타입 캐스팅 (Type Casting)
텐서에도 자료형이 있다. 이 자료형의 변환을 타입 캐스팅이라 한다.
* FloatTensor, LongTensor, ByteTensor,,,,
* tensor.float tensor.long ,,, - 값 덮어쓰기 (In-place Operation)
텐서의 연산과 동시에 해당 텐서에 연산의 결과를 덮어쓰기 위해서 x.mul_ 과 같이 _를 뒤에 붙여주면 바로 값이 덮어씌워진다.
* 내용의 일부는 해당 글을 참고하였습니다.
'Programming > python-deep learning' 카테고리의 다른 글
Tensorflow의 Loss Function과 Metrics의 차이 (0) | 2023.10.05 |
---|---|
[Tensorflow] 그림으로 이해하는 CNN 연산과정 (코드포함) (0) | 2023.09.21 |
Tensor란 무엇인가? (+ Python Numpy Tensor 구현 및 기본 기능) (1) | 2023.08.31 |
Pretrained model, checkpoints, Fine-Tuning, Transfer Learning 정리 (0) | 2023.07.05 |
pytorch로 분류모델 학습시켜보기 (code) (0) | 2022.10.27 |