1. PyTorch, TensorFlow, Keras란?
| 프레임워크 | 주요 특징/설명 |
|---|
| PyTorch | - Facebook 개발- 코드가 Pythonic, 직관적- 연구, 실험, 최신 모델 구현에 강점 |
| TensorFlow | - Google 개발- 기업/대규모 서비스, 배포에 강점- 확장성, 생산성, 복잡한 모델에 강함 |
| Keras | - 원래 독립 프레임워크(현재는 TensorFlow에 통합, tf.keras)- 가장 쉬운 딥러닝 인터페이스- 빠른 프로토타이핑, 교육, 직관적 설계 |
2. 어디서, 언제, 어떻게 쓰나?
| 상황 | 추천 프레임워크 | 비고 |
|---|
| 딥러닝 연구/논문/최신 실험 | PyTorch | 코드 자유도/유연성 최고 |
| 서비스 배포, 대규모 생산환경 | TensorFlow | 서버, 모바일, 확장성 강점 |
| 쉽고 빠른 딥러닝 모델링/교육 | Keras(tf.keras) | 가장 간단, 직관적 코드 |
| 이미지/텍스트/시계열 등 복잡 데이터 | 셋 다 가능 | 직접 신경망 설계(회귀/분류 자유자재) |
| 기존 모델 활용, 튜토리얼 학습 | Keras(tf.keras), PyTorch | 예제 많음, 실습/입문에 적합 |
3. 딥러닝 회귀/분류/시계열 모델 직접 설계
- 회귀: 마지막 출력층에 활성화함수 없이 Dense(1)
- 분류: 마지막 출력층에 소프트맥스/시그모이드 등 사용
- 이미지, 자연어, 시계열: Conv2D, LSTM 등 다양한 레이어 자유롭게 조합
4. 주요 사용법(간단 예시)
(1) PyTorch
import torch
import torch.nn as nn
class Net(nn.Module):
def __init__(self):
super().__init__()
self.fc1 = nn.Linear(10, 64)
self.fc2 = nn.Linear(64, 1)
def forward(self, x):
x = torch.relu(self.fc1(x))
x = self.fc2(x)
return x
model = Net()
(2) TensorFlow / Keras
from tensorflow import keras
model = keras.Sequential([
keras.layers.Dense(64, activation='relu', input_shape=(10,)),
keras.layers.Dense(1)
])
model.compile(optimizer='adam', loss='mse')
5. 주요 파라미터/설정
- layers.Dense/nn.Linear: 신경망 레이어(입력, 은닉, 출력 등)
- activation: relu, sigmoid, softmax 등
- optimizer: adam, sgd, rmsprop 등
- loss: mse(회귀), crossentropy(분류) 등
- epochs, batch_size: 학습 반복 수, 배치 크기 등
- callbacks, regularization: 얼리스탑, 드롭아웃 등 추가 설정도 가능
6. 비교 요약 표
| 프레임워크 | 유연성/직관성 | 대규모/서비스 | 교육/입문 | 실무/연구 | 추천 상황 |
|---|
| PyTorch | ★★★★★ | ★★★★☆ | ★★★★☆ | ★★★★★ | 최신 논문, 복잡 모델, 실험 |
| TensorFlow | ★★★★☆ | ★★★★★ | ★★★☆☆ | ★★★★☆ | 기업, 대규모 배포, 복합 서비스 |
| Keras(tf.keras) | ★★★★☆ | ★★★★☆ | ★★★★★ | ★★★★☆ | 입문, 프로토타입, 쉬운 사용 |
7. 결론/실전 TIP
- 딥러닝/신경망 모델을 직접 설계하고 싶을 때 → PyTorch, TensorFlow, Keras 중 자유롭게 선택
- 실무/생산/최고성능 → TensorFlow, PyTorch
- 입문, 실습, 빠른 개발 → Keras(tf.keras)