인공지능/머신러닝
6. 딥러닝을 위한 프레임 워크 - 파이토치(PyTorch)
으노으뇨
2023. 9. 19. 22:56
728x90
반응형
SMALL
파이토치(PyTorch)
개념
파이썬 오픈소스 라이브러리
딥러닝을 위한 프레임 워크 : 신경망을 생성하고 학습시킴
자연어처리, 이미지 처리 등 다양한 처리를 위해 사용됨
모듈과 클래스
모듈/클래스 | 설명 | |
torch | 주요 네임 스페이스 | |
torch.autograd | 자동미분함수 내장 | |
torch.nn | 신경망 구축을 위한 데이터구조나 레이어 정의 | |
torch.optim | 확률적 경사하강법(SGD)를 중심으로 최적화 알고리즘 구현 | |
torch.utils.data | SGD 반복연산 시 사용하는 미니 배치용 유틸리티 함수 포함 | |
torch.utils.data.DataLoader | 순회가능한 객체(iterable)로 처리하여 Dataset의 샘플에 쉽게 접근할 수 있도록 함 | |
torch.utils.data.Dataset | 샘플과 정답을 저장 ex ) from torch.utils.data import Dataset from torch.utils.data import DataLoader |
|
torch.onnx | 서로 다른 딥러닝 프레임워크간 모델 공유시 사용하는 포맷 onnx(open neural network exchange)의 포맷. export할때 사용 |
파이토치의 텐서
텐서를 사용하여 모델의 입력(input), 출력(output), 매개변수들의 부호화(encode)진행
벡터형태의 텐서 : 1차원으로 구성된 값
행렬형태의 텐서 : 2차원으로 구성된 값
파이토치 문법
종류 | 소스 | 설명 |
텐서 초기화 | 변수명=torch.tensor(데이터) | 데이터를 이용한 텐서 생성 |
torch.zeros_like(행렬) | 0으로 채워진 텐서 생성 | |
torch.ones_like(행렬) | 1으로 채워진 텐서 생성 | |
torch.rand_like(x, dtype=자료형) ex ) data3=torch.rand_like(x, dtype=torch.float) |
0~1사이의 소수로 채워진 텐서 생서 | |
shape = (차원 ex : 2행 3열인경우 (2,3,)) 변수명 = torch.rand(shape) |
shape를 모두 랜덤으로 채운다 | |
shape = (차원 ex : 2행 3열인경우 (2,3,)) 변수명 = torch.ones(shape) |
shape를 모두 1로 채운다 | |
shape = (차원 ex : 2행 3열인경우 (2,3,)) 변수명 = torch.zeros(shape) |
shape를 모두 0으로 채운다 | |
torch.from_numpy(넘파이 배열) | 넘파이 배열을 텐서로 변경 | |
예 |
결과) ![]() |
차원 및 크기 관련 메서드
동작 | 소스 | 설명 |
차원 보여주기 | 변수명.dim() | 차원 보여주기 |
크기 보여주기 | 변수명.size() | 크기 보여주기 |
변수명.shape | 크기 보여주기 | |
텐서 크기 변경하기 (view 사용) |
변수명.view[-1,n] | 행은 상관없고, 열을 무조건 n개로 맞춤 |
변수명.view[n,-1] | 열은 상관없고, 행을 무조건 n개로 맞춤 | |
행렬의 차원 변경 | Squeeze | :1차원인경우, 차원 제거 위치를 지정하면 해당 위치의 1만 제거가능. 위치 지정하지 않으면 왼쪽부터 하나씩 제거 ex : shape=[3,1]인 경우 squeeze(1)이면, [3] 즉 벡터가 됨 |
UnSqueeze | 차원 추가 위치를 지정하면 해당 위치에 size가 1인 빈 공간을 채워주며차원 확장 ex : shape=[3]인 경우 unsqueeze(0)이면 [1,3]의 행렬이 됨 |
|
예 |
실행결과 ![]() |
연산
연산 | 소스 | 설명 |
텐서의 합 | 변수명.sum(dim=0 or 1) | dim=0 열단위, dim=1 행단위 연산. dim이 없으면 전체 텐서를 대상으로 연산 |
평균구하기 | 변수명.mean(dim=0 or 1) | |
행렬곱 | 행렬1.matmul(행렬2) | @을 적어도 무방 |
텐서 연결하기 | touch.cat([]) | |
내용 덮어쓰기 | _ 사용 |
728x90
반응형
LIST