기본적인 오토인코더 구현 실습(MN… 중심의 DL 실험에서 직접 따라간 구현 흐름과 코드 증거를 다시 볼 수 있게 정리한 DL 학습 기록입니다. 본문은 기본적인 오토인코더 구현 실습(MN… 순서로 핵심 장면을 먼저 훑고, 기본 전처리 후 데이터 불러오기, 모델 생성 및 학습, 모델 평가 같은 코드로 실제 구현을 이어서 확인할 수 있습니다. md 원본과 23개 코드 블록, 23개 실행 셀을 함께 남겨 구현 흐름을 다시 따라갈 수 있게 정리했습니다. 주요 스택은 numpy, matplotlib, torch, torchvision입니다.

빠르게 볼 수 있는 포인트: 기본적인 오토인코더 구현 실습(MNIST).

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

주요 스택: numpy, matplotlib, torch, torchvision, mpl_toolkits

Snapshot

Item Value
Track DL
Type Shared Note
Source Files md
Code Blocks 23
Execution Cells 23
Libraries numpy, matplotlib, torch, torchvision, mpl_toolkits, plotly
Source Note 4-6_Autoencoder - 공유

What This Note Covers

기본적인 오토인코더 구현 실습(MNIST)

모델 학습 > 모델 생성 및 학습, 모델 학습 > 모델 평가, 모델 학습 > 차원축소와 시각화 같은 코드를 직접 따라가며 기본적인 오토인코더 구현 실습(MNIST) 흐름을 확인했습니다.

  • 읽을 포인트: 세부 흐름: 모델 학습 > 모델 생성 및 학습, 모델 학습 > 모델 평가, 모델 학습 > 차원축소와 시각화

모델 학습 > 모델 생성 및 학습

모델 정의, 손실, 최적화 흐름을 코드로 연결해 보는 구간입니다.

모델 학습 > 모델 평가

모델 정의, 손실, 최적화 흐름을 코드로 연결해 보는 구간입니다.

모델 학습 > 차원축소와 시각화

모델 정의, 손실, 최적화 흐름을 코드로 연결해 보는 구간입니다.

Why This Matters

데이터 파이프라인

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

Implementation Flow

  1. 기본적인 오토인코더 구현 실습(MNIST): 모델 학습 > 모델 생성 및 학습, 모델 학습 > 모델 평가

Code Highlights

기본 전처리 후 데이터 불러오기

기본 전처리 후 데이터 불러오기는 이 노트에서 핵심 구현을 보여주는 코드 블록입니다. 코드 안에서는 train_dataset = datasets.MNIST(, root=’./mnist’,, train=True, 흐름이 주석과 함께 드러납니다.

# train_dataset = datasets.MNIST(
#     root='./mnist',
#     train=True,
#     download=True,
#     transform=transforms,
# )

# test_dataset = datasets.MNIST(
#     root='./mnist',
#     train=False,
#     download=True,
#     transform=transforms,
# )

모델 생성 및 학습

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

class BasicAutoencoder(nn.Module):
    def __init__(self):
        super().__init__()
        self.encoder = nn.Sequential(
            nn.Linear(28*28, 128),
            nn.ReLU(),
            nn.Linear(128, 64),
            nn.ReLU()
        )
        self.decoder = nn.Sequential(
            nn.Linear(64, 128),
            nn.ReLU(),
            nn.Linear(128, 28*28),
            nn.Sigmoid()
        )

    def forward(self, x):
        x = self.encoder(x)
        x = self.decoder(x)
        return x

모델 평가

모델 평가는 이 노트에서 핵심 구현을 보여주는 코드 블록입니다. 코드 안에서는 테스트 흐름이 주석과 함께 드러납니다.

# 테스트
model.eval()
with torch.no_grad():
    for images, _ in test_dataloader:
        images = images.view(images.size(0), -1).to(device)
        outputs = model(images)
        break

차원축소와 시각화

차원축소와 시각화는 이 노트에서 핵심 구현을 보여주는 코드 블록입니다. 코드 안에서는 데이터 전처리 (버전 문제 시 transforms.ToTensor()로 대체 가능), MNIST 데이터셋 불러오기, train_dataset = datasets.FashionMNIST( 흐름이 주석과 함께 드러납니다.

import numpy as np
import matplotlib.pyplot as plt
import torch
import torch.nn as nn
import torch.optim as optim
from torchvision import datasets
from torch.utils.data import DataLoader
from torchvision.transforms import v2  # torchvision 0.14 이상에서 사용 가능
from mpl_toolkits.mplot3d import Axes3D  # 3D 시각화를 위해 필요

# 데이터 전처리 (버전 문제 시 transforms.ToTensor()로 대체 가능)
transform = v2.Compose([
    v2.ToImage(),
    v2.ToDtype(dtype=torch.float32, scale=True)
])

# MNIST 데이터셋 불러오기
train_dataset = datasets.MNIST(
    root='./mnist',
    train=True,
    download=True,
    transform=transform
)
test_dataset = datasets.MNIST(
    root='./mnist',
    train=False,
    download=True,
    transform=transform
# ... trimmed ...

Source Bundle

  • Source path: 12_Deep_Learning/Code_Snippets/4-6_Autoencoder - 공유.md
  • Source formats: md
  • Companion files: 4-6_Autoencoder - 공유.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

원본 노트에 별도 설명 문단이 많지 않아 코드 중심으로 보존했습니다.