- Keras: TensorFlow의 Wrapper
- TensorFlow: Static graph, define and run
TensorFlow는 그래프를 먼저 정의한 후에, 실행 시점에 데이터를 feed하는 방식. Google꺼라서 production, cloud, multi-gpu 활용에 수월함.- PyTorch: Dynamic computation graph
PyTorch는 실행하면서 그래프를 생성하는 방식, 중간 중간에 값 확인이 가능, pythonic code. facebook에서 개발했으며 디버깅이 수월해 아이디어 구현, 논문에 유용함.
(pytorch와 tensorflow를 모두 사용해 보지 않아서 dynamic/static graph의 차이를 아직 잘 모르겠다 ㅠ)
numpy에는 ndarray라는 객체를, pytorch에서는 Tensor라는 객체를 사용한다.
Tensor 만들기: ndarray → Tensor, list → Tensor 생성 모두 가능하다.
Tensor의 type은 numpy와 비슷하지만, GPU 지원 여부가 다르다.
view: reshape과 동일한 기능이지만, reshape대신에 view 사용을 권장한다.
reshape은 값을 복사해 다른 메모리를 가리킨다. view는 값을 복사하지 않고 기존에 가리키던 메모리의 형태만 다르게 표현, 동일한 주소의 메모리 값을 바꾸면 같이 변한다.
squeeze: 1인 차원을 제거(압축)
unsqueeze: 특정 위치에 1인 차원을 추가, 어느 위치에 추가할지 unsqueeze(dim)을 파라미터로 넣어야 한다.
torch.mm( ) 과 torch.dot( )
- torch.mm() : 행렬 곱 연산
- torch.dot() : 내접 연산
- torch.mm() : 행렬 곱 연산, broad casting 지원X
- torch.matmul() : broad casting 지원
pytorch에서는 backward()함수를 사용하면 자동으로 미분값을 계산해준다.
w에 대한 미분 구하기
변수가 2개인 편미분 예제
references
위키독스 텐서 조작하기
pytorch-template