RNN
RNN, LSTM 중심의 DL 실험에서 직접 따라간 구현 흐름과 코드 증거를 다시 볼 수 있게 정리한 DL 학습 기록입니다. 본문은 RNN, LSTM, GRU 순서로 핵심 장면을 먼저 훑고, RNN, LSTM, GRU 같은 코드로 실제 구현을 이어서 확인할 수 있습니다. md 원본과 17개 코드 블록, 16개 실행 셀을 함께 남겨 구현 흐름을 다시 따라갈 수 있게 정리했습니다. 주요 스택은 torch, numpy, matplotlib입니다.
빠르게 볼 수 있는 포인트: RNN, LSTM, GRU.
남겨둔 자료: md 원본과 17개 코드 블록, 16개 실행 셀을 함께 남겨 구현 흐름을 다시 따라갈 수 있게 정리했습니다. 주요 스택은 torch, numpy, matplotlib입니다.
주요 스택: torch, numpy, matplotlib
Snapshot
| Item | Value |
|---|---|
| Track | DL |
| Type | Archive Note |
| Source Files | md |
| Code Blocks | 17 |
| Execution Cells | 16 |
| Libraries | torch, numpy, matplotlib |
| Source Note | (실습)RNN |
What This Note Covers
RNN
PyTorch에서는 torch.nn.RNN, torch.nn.LSTM, torch.nn.GRU 클래스를 사용하여 순환 신경망을 쉽게 구현할 수 있습니다. 각 클래스는 공통적으로 아래와 같은 주요 파라미터를 가집니다. input_size: 입력 특성의 차원 (예: 피처 개수)
- 읽을 포인트: RNN 아래 코드와 함께 읽으면 구현 포인트가 더 또렷해지는 구간입니다.
LSTM
out: 모든 타임스텝의 출력 ([batch_size, seq_len, hidden_size]) hidden: 마지막 타임스텝의 은닉 상태 ([num_layers, batch_size, hidden_size])
- 읽을 포인트: LSTM 아래 코드와 함께 읽으면 구현 포인트가 더 또렷해지는 구간입니다.
GRU
out: 모든 타임스텝의 출력 ([batch_size, seq_len, hidden_size]) hidden: 마지막 타임스텝의 은닉 상태 ([num_layers, batch_size, hidden_size])
- 읽을 포인트: GRU 아래 코드와 함께 읽으면 구현 포인트가 더 또렷해지는 구간입니다.
시계열 데이터 실습
시계열 데이터 실습 코드를 직접 따라가며 시계열 데이터 실습 흐름을 확인했습니다.
- 읽을 포인트: 시계열 데이터 실습 아래 코드와 함께 읽으면 구현 포인트가 더 또렷해지는 구간입니다.
Why This Matters
데이터 파이프라인
- 왜 필요한가: 모델 성능 이전에 입력이 일정한 형식으로 잘 들어가야 학습과 평가가 안정적으로 반복됩니다.
- 왜 이 방식을 쓰는가: Dataset/DataLoader 구조는 데이터 읽기, 변환, 배치 처리를 분리해 코드 재사용성과 실험 반복성을 높여줍니다.
- 원리: 각 샘플을 Dataset이 제공하고, DataLoader가 이를 배치로 묶어 셔플·병렬 로딩·collate를 담당합니다.
Implementation Flow
- RNN: PyTorch에서는 torch.nn.RNN, torch.nn.LSTM, torch.nn.GRU 클래스를 사용하여 순환 신경망을 쉽게 구현할 수 있습니다. 각 클래스는 공통적으로 아래와 같은 주요 파라미터를 가집니다. input_size: 입력 특성의 차원…
- LSTM: out: 모든 타임스텝의 출력 ([batch_size, seq_len, hidden_size]) hidden: 마지막 타임스텝의 은닉 상태 ([num_layers, batch_size, hidden_size])
- GRU: out: 모든 타임스텝의 출력 ([batch_size, seq_len, hidden_size]) hidden: 마지막 타임스텝의 은닉 상태 ([num_layers, batch_size, hidden_size])
- 시계열 데이터 실습: 시계열 데이터 실습 코드를 직접 따라가며 시계열 데이터 실습 흐름을 확인했습니다.
Code Highlights
RNN
RNN는 이 노트에서 핵심 구현을 보여주는 코드 블록입니다. 코드 안에서는 “나는 학교에 간다”, “나는 학원에 간다”, “나는 회사에 간다” 흐름이 주석과 함께 드러납니다.
# "나는 학교에 간다"
# "나는 학원에 간다"
# "나는 회사에 간다"
# "나는" --> torch.randn(10)
# "학교에" --> torch.randn(10)
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=1, batch_first=True)
x = torch.randn(32,3,10)
out, hidden = gru(x)
print(out.shape, hidden.shape)
시계열 데이터 실습
시계열 데이터 실습는 이 노트에서 핵심 구현을 보여주는 코드 블록입니다. 원본 노트에서 구현 흐름을 가장 잘 보여주는 핵심 코드 중 하나입니다.
import torch
def creat_sequences(data, seq_length):
sequence=[]
labels=[]
for i in range(len(data)-seq_length):
sequence.append(data[i:i+seq_length])
labels.append(data[i+seq_length])
sequence = torch.tensor(np.array(sequence), dtype=torch.float32).unsqueeze(-1)
labels = torch.tensor(np.array(labels), dtype=torch.float32)
return sequence, labels
seq_length =50
X, y =creat_sequences(data, seq_length=seq_length)
print(X.shape, y.shape)
Source Bundle
- Source path:
12_Deep_Learning/Code_Snippets/(실습)RNN.md - Source formats:
md - Companion files:
(실습)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: 입력 특성의 차원 (예: 피처 개수)