RNN 레이어 설명 - 공유
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
- 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: 입력 특성의 차원 (예: 피처 개수)