특화 Autoencoder 아키텍처 실무 구현 및 실험
1. Variational Autoencoder (VAE)
# ... (VAE 코드 참조)
2. Denoising Autoencoder (DAE)
# ... (DAE 코드 참조)
3. Convolutional Autoencoder (CAE)
# ... (CAE 코드 참조)
4. MNIST 데이터셋 연동 예시 (CAE 기준)
from torchvision import datasets, transforms
from torch.utils.data import DataLoader
transform = transforms.Compose([
transforms.ToTensor(),
])
train_data = datasets.MNIST(root='./data', train=True, download=True, transform=transform)
train_loader = DataLoader(train_data, batch_size=64, shuffle=True)
model = ConvAutoencoder()
optimizer = torch.optim.Adam(model.parameters(), lr=1e-3)
criterion = nn.MSELoss()
for epoch in range(5):
for img, _ in train_loader:
optimizer.zero_grad()
output = model(img)
loss = criterion(output, img)
loss.backward()
optimizer.step()
5. 복원 결과 시각화
import matplotlib.pyplot as plt
model.eval()
with torch.no_grad():
sample = next(iter(train_loader))[0][:5] # 5개 이미지
reconstructed = model(sample)
fig, axes = plt.subplots(2, 5, figsize=(12, 4))
for i in range(5):
axes[0, i].imshow(sample[i][0], cmap='gray')
axes[0, i].set_title('Original')
axes[1, i].imshow(reconstructed[i][0], cmap='gray')
axes[1, i].set_title('Reconstructed')
for ax in axes[:, i]:
ax.axis('off')
plt.tight_layout()
plt.show()
6. 아키텍처별 성능 비교 표 (예시)
모델 | 재구성 Loss (MSE) | 훈련 속도 | 시각 품질 | 특징 추출 |
---|---|---|---|---|
VAE | 0.013 | 보통 | △ 다양성 ↑, 세밀도 ↓ | ◎ (분포 정보 보존) |
DAE | 0.009 | 빠름 | ◎ 노이즈 제거 | ◎ (강건함) |
CAE | 0.005 | 빠름 | ◎ 이미지 복원 품질 | △ (시각적 정보 중심) |