[딥러닝]PyTorch, TensorFlow, Keras

c.haha.e·2025년 8월 16일

STUDY

목록 보기
19/27

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)  # 회귀: 1, 분류: 클래스 수
    def forward(self, x):
        x = torch.relu(self.fc1(x))
        x = self.fc2(x)
        return x

model = Net()
# optimizer, loss 함수 등 자유롭게 정의

(2) TensorFlow / Keras


from tensorflow import keras

model = keras.Sequential([
    keras.layers.Dense(64, activation='relu', input_shape=(10,)),
    keras.layers.Dense(1)  # 회귀: 1, 분류: 클래스 수+softmax
])
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)
profile
기록용 블로그

0개의 댓글