AI

Pytorch

아나엘 2023. 1. 26. 18:35

패키지 기본 구성(출처: https://wikidocs.net/57168)

 

torch: main namespace. tensor등의 함수 포함. numpy와 유사한 구조

torch.autograd: 자동 미분을 위한 함수. on/off 제어는 enable_grad/no_grad나 자체 미분가능 함수 정의 시 사용하는 기반 클래스인 Function 등을 포함.

torch.nn: neural network 구축 위한 다양한 데이터 구조나 레이어 정의돼 있음. RNN, LSTM, ReLU, MSELoss 등

torch.optim: stochastic gradient descent 를 중심으로 한 파라미터 최적화 알고리즘 구현되어 있음

torch.utils.data: sgd 반복 연산 시 미니배치용 유틸리티 함수 포함

torch.onnx: 서로 다른 딥러닝 프레임워크 간 모델 공유 시 사용

 

2D tensor: batch size  x  dimension (DS 분야)

3D tensor: batch size x width x height (vision 분야), batch size x length x dim(NLP 분야. length: 문장길이, dim: 단어벡터의 차원)

 

4개 문장으로 된 전체 훈련 데이터: 아직 컴퓨터는 모름. 

[[나는 사과를 좋아해], [나는 바나나를 좋아해], [나는 사과를 싫어해], [나는 바나나를 싫어해]]

 

단어별로 나누기: 4 x 3 의 2D 텐서. 각 단어를 텍스트->벡터로 처리하여 컴퓨터가 더 잘 처리할 수 있도록 하자. 

[['나는', '사과를', '좋아해'], ['나는', '바나나를', '좋아해'], ['나는', '사과를', '싫어해'], ['나는', '바나나를', '싫어해']]

벡터로 변환

'나는' = [0.1, 0.2, 0.9]
'사과를' = [0.3, 0.5, 0.1]
'바나나를' = [0.3, 0.5, 0.2]
'좋아해' = [0.7, 0.6, 0.5]
'싫어해' = [0.5, 0.6, 0.7]

훈련데이터 재구성

[[[0.1, 0.2, 0.9], [0.3, 0.5, 0.1], [0.7, 0.6, 0.5]],
 [[0.1, 0.2, 0.9], [0.3, 0.5, 0.2], [0.7, 0.6, 0.5]],
 [[0.1, 0.2, 0.9], [0.3, 0.5, 0.1], [0.5, 0.6, 0.7]],
 [[0.1, 0.2, 0.9], [0.3, 0.5, 0.2], [0.5, 0.6, 0.7]]]

batch size = 2 로 설정하면 2개씩 잘림. 한 배치의 tensor의 크기는 (2x3x3)이 됨.

첫번째 배치 #1
[[[0.1, 0.2, 0.9], [0.3, 0.5, 0.1], [0.7, 0.6, 0.5]],
 [[0.1, 0.2, 0.9], [0.3, 0.5, 0.2], [0.7, 0.6, 0.5]]]

두번째 배치 #2
[[[0.1, 0.2, 0.9], [0.3, 0.5, 0.1], [0.5, 0.6, 0.7]],
 [[0.1, 0.2, 0.9], [0.3, 0.5, 0.2], [0.5, 0.6, 0.7]]]
print(t.dim())  # rank. 즉, 차원
print(t.shape)  # shape
print(t.size()) # shape

 

 

#shape, size(), view(), sqeeze(), unsqeeze(), cat(), stack() 기능 알아놓기

 

반응형