6.3 PyTorch实现Auto Encoder模型
Posted 王小小小草
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6.3 PyTorch实现Auto Encoder模型相关的知识,希望对你有一定的参考价值。
欢迎订阅本专栏:《PyTorch深度学习实践》
订阅地址:https://blog.csdn.net/sinat_33761963/category_9720080.html
- 第二章:认识Tensor的类型、创建、存储、api等,打好Tensor的基础,是进行PyTorch深度学习实践的重中之重的基础。
- 第三章:学习PyTorch如何读入各种外部数据
- 第四章:利用PyTorch从头到尾创建、训练、评估一个模型,理解与熟悉PyTorch实现模型的每个步骤,用到的模块与方法。
- 第五章:学习如何利用PyTorch提供的3种方法去创建各种模型结构。
- 第六章:利用PyTorch实现简单与经典的模型全过程:简单二分类、手写字体识别、词向量的实现、自编码器实现。
- 第七章:利用PyTorch实现复杂模型:翻译机(nlp领域)、生成对抗网络(GAN)、强化学习(RL)、风格迁移(cv领域)。
- 第八章:PyTorch的其他高级用法:模型在不同框架之间的迁移、可视化、多个GPU并行计算。
6.2 Auto Enocder模型
自编码器是很经典的模型,分为encoder和decoder两个部分,特征输入encoder后输出编码,这个编码又做为decoder端的输入,经过decoder后做预测。
下面时一个非常简单的自编码器的构建与训练。
import torch
import torch.nn as nn
import torch.nn.functional as F
class AutoEncoderDecoder(nn.Module):
def __init__(self, dim_in, dim_out=128, dropout=0.2):
"""模型结构"""
super(AutoEncoderDecoder, self).__init__()
self.encoder = nn.Sequential(
nn.Linear(dim_in, dim_out),
nn.LeakyReLU()
)
self.decoder = nn.Sequential(
nn.Linear(dim_out, dim_in)
)
self.dropout = dropout
def forward(self, x):
e = self.encoder(x)
e = F.dropout(e, self.dropout) # 可以增加dropout, 也可以去掉,将一定比例的数据设置为0
d = self.decoder(e)
return e, d
class TrainAE():
def __init__(self, epoch=5):
"""训练,将X输入encoder->decoder,最小化输出与输入的损失,及让自己生成自己"""
self.epoch = epoch
def train(self, X):
# 创建模型
N, dim_in = X.shape()
model = AutoEncoderDecoder(dim_in)
# 优化器
optim = torch.optim.Adam(model.parameters(), lr=0.0001)
# 损失
loss_f = torch.nn.MSELoss()
for e in range(self.epoch):
optim.zero_grad()
embedding, Y_pred = model(X)
loss = loss_f(Y_pred, X)
loss.backward()
optim.step()
embedding, Y_pred = model(X)
return embedding.data.numpy()
以上是关于6.3 PyTorch实现Auto Encoder模型的主要内容,如果未能解决你的问题,请参考以下文章
Variational Auto-encoder(VAE)变分自编码器-Pytorch
TensorFlow实现去噪自编码器及使用—Masking Noise Auto Encoder
tensorflow tutorials:用tensorflow实现降噪自编码器(Denoising Auto-Encoder)
TensorFlow实现去噪自编码器及使用—Masking Noise Auto Encoder
TensorFlow实现去噪自编码器及使用—Masking Noise Auto Encoder
自编码器原理以及相关算法 Basic Auto-Encoder,Regularized Auto-Encoder,Denoising Auto-Encoder