PyTorch自用笔记(第七周)
十三、自编码器Auto-Encoders
13.1 无监督学习
机器学习的三大领域:
增强学习:智能体与环境交互
监督学习:分类和回归,有标签,依赖于人的主观判断
无监督学习:无标签;作用:降维;预处理;可视化
13.2 Auto-Encoder
降维:将高维数据用低维特征表示
损失函数:
注:简单的像素级别的重建有可能只是记住图像中的一些特征,生成结果并不稳定
变体:
Denoising AutoEncoders:给原始图像加入噪声后进行重建
Dropout AutoEncoders:将神经网络中某些weight暂设为0
Adversarial AutoEncoders:添加一个鉴别器,计算真实图片和生成图片的差别
13.3 变分Auto-Encoder
VAE.py
import torch
from torch import nn
class VAE(nn.Module):
def __init__(self):
super(VAE, self).__init__()
# [b, 784] => [b, 20]
# u: [b, 10]
# sigma: [b, 10]
self.encoder = nn.Sequential(
nn.Linear(784, 256),
nn.ReLU(),
nn.Linear(256, 64),
nn.ReLU(),
nn.Linear(64, 20),
nn.ReLU()
)
# [b, 20] => [b, 784]
self.decoder = nn.Sequential(
nn.Linear(10, 64),
nn.ReLU(),
nn.Linear(64, 256),
nn.ReLU