RNN 레이어 설명 - 공유에서 직접 따라간 구현 흐름과 코드 증거를 다시 볼 수 있게 정리한 DL 학습 기록입니다. 본문은 PyTorch에서 RNN, LSTM… 순서로 핵심 장면을 먼저 훑고, LSTM, GRU, 간단한 데이터 생성 같은 코드로 실제 구현을 이어서 확인할 수 있습니다. md 원본과 23개 코드 블록, 18개 실행 셀을 함께 남겨 구현 흐름을 다시 따라갈 수 있게 정리했습니다. 주요 스택은 torch, numpy, matplotlib입니다.

빠르게 볼 수 있는 포인트: PyTorch에서 RNN, LSTM, GRU 사용법.

남겨둔 자료: md 원본과 23개 코드 블록, 18개 실행 셀을 함께 남겨 구현 흐름을 다시 따라갈 수 있게 정리했습니다. 주요 스택은 torch, numpy, matplotlib입니다.

주요 스택: torch, numpy, matplotlib

Snapshot

Item Value
Track DL
Type Shared Note
Source Files md
Code Blocks 23
Execution Cells 18
Libraries torch, numpy, matplotlib
Source Note 4-4_RNN 레이어 설명 - 공유

What This Note Covers

PyTorch에서 RNN, LSTM, GRU 사용법

PyTorch에서는 torch.nn.RNN, torch.nn.LSTM, torch.nn.GRU 클래스를 사용하여 순환 신경망을 쉽게 구현할 수 있습니다. 각 클래스는 공통적으로 아래와 같은 주요 파라미터를 가집니다. input_size: 입력 특성의 차원 (예: 피처 개수)

  • 읽을 포인트: 세부 흐름: RNN, 시계열 데이터 실습 > 간단한 데이터 생성, 시계열 데이터 실습 > 설명

RNN

out: 모든 타임스텝의 출력 ([batch_size, seq_len, hidden_size]) hidden: 마지막 타임스텝의 은닉 상태 ([num_layers, batch_size, hidden_size])

시계열 데이터 실습 > 간단한 데이터 생성

우리는 간단한 사인 함수 데이터를 생성하여 시계열 예측을 진행합니다.

시계열 데이터 실습 > 설명

배치 크기 450: 450개의 독립된 시계열 샘플을 병렬 처리. - 시퀀스 길이 50: 각 시계열은 50개의 time step으로 구성됨. - 입력 차원 1: 단변량 시계열 (예: 온도, 주가 등). - RNN Layer: 두 개의 계층으로 구성되어 시퀀스 정보를 단계적으로 추출….

Why This Matters

데이터 파이프라인

  • 왜 필요한가: 모델 성능 이전에 입력이 일정한 형식으로 잘 들어가야 학습과 평가가 안정적으로 반복됩니다.
  • 왜 이 방식을 쓰는가: Dataset/DataLoader 구조는 데이터 읽기, 변환, 배치 처리를 분리해 코드 재사용성과 실험 반복성을 높여줍니다.
  • 원리: 각 샘플을 Dataset이 제공하고, DataLoader가 이를 배치로 묶어 셔플·병렬 로딩·collate를 담당합니다.

Implementation Flow

  1. PyTorch에서 RNN, LSTM, GRU 사용법: RNN, 시계열 데이터 실습 > 간단한 데이터 생성

Code Highlights

LSTM

LSTM는 이 노트에서 핵심 구현을 보여주는 코드 블록입니다. 실험의 중심이 되는 모델 아키텍처를 정의하는 코드입니다.

lstm = nn.LSTM(input_size=10, hidden_size=20, num_layers=1, batch_first=True)
x = torch.randn(32, 3, 10)
out, (hidden, cell) = lstm(x)
print(out.shape, hidden.shape, cell.shape)

GRU

GRU는 이 노트에서 핵심 구현을 보여주는 코드 블록입니다. 실험의 중심이 되는 모델 아키텍처를 정의하는 코드입니다.

gru = nn.GRU(input_size=10, hidden_size=20, num_layers=2, batch_first=True)
x = torch.randn(5, 3, 10)
out, hidden = gru(x)
print(out.shape, hidden.shape)

간단한 데이터 생성

간단한 데이터 생성는 이 노트에서 핵심 구현을 보여주는 코드 블록입니다. 우리는 간단한 사인 함수 데이터를 생성하여 시계열 예측을 진행합니다.

class RNNModel(nn.Module):
    def __init__(self, input_size, hidden_size, num_layers):
        super(RNNModel, self).__init__()
        self.rnn = nn.RNN(input_size, hidden_size, num_layers, batch_first=True)
        self.fc = nn.Linear(hidden_size, 1)

    def forward(self, x):
        out, _ = self.rnn(x) # out: [450, 50, 20]
        ht = out[:, -1, :]   # ht:  [450, 20]
        return self.fc(ht)   # output: [450, 1]

🔍 설명

🔍 설명는 이 노트에서 핵심 구현을 보여주는 코드 블록입니다. 코드 안에서는 모델 학습, 예측 및 시각화 흐름이 주석과 함께 드러납니다.

# 모델 학습
num_epochs = 100
for epoch in range(num_epochs):
    optimizer.zero_grad()
    outputs = model(X)
    loss = criterion(outputs.squeeze(), y)
    loss.backward()
    optimizer.step()

    if epoch % 10 == 0:
        print(f'Epoch [{epoch}/{num_epochs}], Loss: {loss.item():.4f}')

# 예측 및 시각화
model.eval()
with torch.no_grad():
    predictions = model(X).numpy()
    print(predictions.shape)

plt.figure(figsize=(10, 4))
plt.plot(data, label='Actual')
plt.plot(range(seq_length, seq_length + len(predictions)), predictions, label='Predicted', linestyle='dashed')
plt.legend()
plt.title("Sine Wave Prediction using LSTM")
plt.show()

Source Bundle

  • Source path: 12_Deep_Learning/Code_Snippets/4-4_RNN 레이어 설명 - 공유.md
  • Source formats: md
  • Companion files: 4-4_RNN 레이어 설명 - 공유.md
  • Note type: code-note
  • Last updated in the source vault: 2026-03-08T03:33:14
  • Related notes: 12_Deep_Learning_Code_Summary.md
  • External references: localhost

Note Preview

PyTorch에서는 torch.nn.RNN, torch.nn.LSTM, torch.nn.GRU 클래스를 사용하여 순환 신경망을 쉽게 구현할 수 있습니다. 각 클래스는 공통적으로 아래와 같은 주요 파라미터를 가집니다.

  • input_size: 입력 특성의 차원 (예: 피처 개수)