텐서플로우는 그래프를 먼저 다 정의하고 실행시점에 데이터를 feed하는 방식이라면, 파이토치는 실행하면서 그래프를 생성하는 방식이다. Pytorch = Numpy(넘파이 구조) + AutoGrad(자동미분가능) + Function(다양한 함수 제공)
기본적으로 텐서가 가질 수 있는 데이터 타입은 numpy와 동일하나 GPU사용 여부만 다름.
torch의 tensor는 GPU에 올려서 사용가능함. <- 더 공부 필요 
1. view: tensor에서도 reshape를 활용 가능하나, 웬만하면 view를 사용하자.
2. squeeze: 차원의 개수가 1인 차원을 삭제 (압축)
3. unsqueeze: 차원의 개수가 1인 차원을 추가

기본적인 텐서 연산은 numpy와 동일하다.
행렬곱 연산은 dot이 아닌 mm 사용하자. dot은 벡터 내적에 사용된다. mm은 행렬곱 연산에 사용되지만 반대로 벡터 연산은 지원하지 않는다.
matmul이라는 행렬곱 연산도 있지만 matmal은 broadcasting이 자동으로 지원된다. broadcasting은 문제가 많으므로 이왕이면 mm 사용하자.
nn.functional 모듈을 통해 다양한 수식 변환을 지원한다.
import torch.nn.functional as F
이 부분은 다른 블로그들을 참고하자.
실행과 관련된 파일
train.py
test.py설정과 관련된 파일
config.json
parse_config.py__getitem__() 함수를 정의하면 마치 dictionary처럼 class를 활용할 수 있다.
이는 PyTorch에서 Dataset을 정의할 때 유용한데, 몇 번째 아이템을 가져올 때 dictionary 또는 배열 접근 방식처럼 가져올 수 있어서다.출처: https://glanceyes.com/entry/PyTorch-프로젝트-구조-이해하기 [지그시:티스토리]