1. Pytorch란?
Facebook(현재 Meta)에서 개발한 오픈소스 딥러닝 프레임워크로, 파이썬(Python) 기반의 텐서 연산 및 자동 미분 기능을 제공하여 딥러닝 및 머신러닝을 쉽게 구축하고 학습 할 수 있도록 지원한다
Pytorch의 주요 특징
1️⃣ 동적 계산 그래프 (Dynamic Computation Graph)
- Tensorflow의 초기 버전과 달리, Pytorch는 동적 계산 그래프를 사용하여 실행 중에 네트워크 구조를 변경할 수 있다
- 유연한 모델 구현과 디버깅이 쉽다
2️⃣ 강력한 GPU 가속 지원
- CUDA를 활용하여 GPU에서 텐서 연산을 빠르게 수행할 수 있다
- .to(device) 메서드를 사용하여 손쉽게 CPU/GPU 간 이동이 가능하다
3️⃣ NumPy와 유사한 텐서(Tensor) 연산 지원
- torch.Tensor를 사용하여 행렬 연산이 가능하다
- 또한, GPU 가속을 활요한 빠른 연산이 가능하며, Numpy와 호환이 된다
4️⃣ 자동 미분(Autograd)
- torch.autograd를 이용하여 역전파(Backpropagation) 및 그래디언트 계산 자동화
- .requires_grad = True 설정 시, 텐서의 모든 연산이 기록됨
2. Pytorch vs Keras
Pytorch
- PyTorch는 실행 중에 네트워크 구조를 변경할 있는 동적 계산 그래프를 사용하기 때문에 RNN,Reinforcement Learning 같은 구조가 자유롭다
- 모델 구조를 직접 구현할 수 있어 커스터마이징이 쉽다
Keras
- 기본적으로 정적 계산 그래프 사용하지만 TensorFlow 2.0 이후 Eager Execution으로 동적 계산이 가능하다
- Keras는 사용자 정의층을 만들 수 있지만 상대적으로 복잡하다
따라서, Pytorch가 개발에 더 적합하기 때문에 현업에서는 Pytorch를 더 많이 쓴다