6.3pytorch实现autoencoder模型(代码片段)

王小小小草 王小小小草     2023-02-17     473

关键词:

欢迎订阅本专栏:《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()

逻辑回归模型logisticregression详细推导(含numpy与pytorch实现)

逻辑回归模型LogisticRegression详细推导(含Numpy与PyTorch实现)文章目录​​逻辑回归模型LogisticRegression详细推导(含Numpy与PyTorch实现)​​​​内容概括​​​​广而告之​​​​LR模型介绍​​​​符号说明​​​​Sigmoid函数​​​... 查看详情

6.4pytorch实现skipgram模型(代码片段)

欢迎订阅本专栏:《PyTorch深度学习实践》订阅地址:https://blog.csdn.net/sinat_33761963/category_9720080.html第二章:认识Tensor的类型、创建、存储、api等,打好Tensor的基础,是进行PyTorch深度学习实践的重中之重的基础... 查看详情

如何使用 PyTorch 正确实现数据重组?

】如何使用PyTorch正确实现数据重组?【英文标题】:HowtoproperlyimplementdatareorganizationusingPyTorch?【发布时间】:2020-03-2907:36:13【问题描述】:这将是一个很长的帖子,提前抱歉......我正在研究一种去噪算法,我的目标是:使用PyTorc... 查看详情

lenet模型对cifar-10数据集分类pytorch(代码片段)

LeNet模型对CIFAR-10数据集分类【pytorch】目录LeNet网络模型CIFAR-10数据集Pytorch实现代码目录本文为针对CIFAR-10数据集的基于简单神经网络LeNet分类实现(pytorch实现)LeNet网络模型Tip:(以上为原始LeNet)为了更好的... 查看详情

使用 pytorch-lightning 实现 Network in Network CNN 模型

】使用pytorch-lightning实现NetworkinNetworkCNN模型【英文标题】:ImplementaNetworkinNetworkCNNmodelusingpytorch-lightning【发布时间】:2021-08-2721:32:06【问题描述】:我正在尝试实现NiN模型。基本上试图从d2l复制代码这是我的代码。importpandasaspdimp... 查看详情

基于pytorch模型剪枝的实现(极大的减少模型计算参数加快模型运行速度)(代码片段)

深度模型剪枝实现以及一些网络优化技巧模型剪枝:LearningEfficientConvolutionalNetworksThroughNetworkSlimming(ICCV2017).基于论文的代码复现以及拓展:在网络上中加入其它优化方法最强深度学习优化器Rangerwarmup与consinelearningrate为什... 查看详情

[深度学习][pytorch]pytorch实现一个简单得线性回归模型并训练

一个典型的神经网络的训练过程如下:定义具有学习参数(或权重)的神经网络迭代输入数据集根据神经网络对输入数据集进行运算计算损失(输出与真实结果的距离,损失越小说明模型越准确)将梯度反... 查看详情

pytorch实现tpu版本cnn模型(代码片段)

...时间的问题,我们使用TPU运行时环境来加速训练。为此,PyTorch一直在通过提供最先进的硬件加速器 查看详情

8.1pytorch模型迁移(代码片段)

欢迎订阅本专栏:《PyTorch深度学习实践》订阅地址:https://blog.csdn.net/sinat_33761963/category_9720080.html第二章:认识Tensor的类型、创建、存储、api等,打好Tensor的基础,是进行PyTorch深度学习实践的重中之重的基础... 查看详情

6.1pytorch简单二分类模型(代码片段)

欢迎订阅本专栏:《PyTorch深度学习实践》订阅地址:https://blog.csdn.net/sinat_33761963/category_9720080.html第二章:认识Tensor的类型、创建、存储、api等,打好Tensor的基础,是进行PyTorch深度学习实践的重中之重的基础... 查看详情

5pytorch构建模型的三种方式(代码片段)

欢迎订阅本专栏:《PyTorch深度学习实践》订阅地址:https://blog.csdn.net/sinat_33761963/category_9720080.html第二章:认识Tensor的类型、创建、存储、api等,打好Tensor的基础,是进行PyTorch深度学习实践的重中之重的基础... 查看详情

基于pytorch的神经网络之autoencoder(代码片段)

...一种在压缩数据方面有较好效果的神经网络:自编码(autoencoder)。2.结构自编码的主要思想就是将数据先不断encode进行降维提取其中的关键信息,再decode解码成新的信息,我们的目标是要使我们生成的信息和原信息尽可... 查看详情

softmax回归的简洁实现(softmax-regression-pytorch)(代码片段)

...上篇(线性回归的简洁实现)中已经了解了使用Pytorch实现模型的便利。下面,让我们再次使用Pytorch来实现一个softmax回归模型。首先导入所需的包或模块。importtorc 查看详情

swintransformer模型转化:pytorch模型转keras。(代码片段)

SwinTransformer官方模型只有pytorch,没有keras,需要转换才可以用。这篇文章记录一下如何实现模型的转化:新建model.py,插入如下代码:这段代码是SwinTransformer模型的keras实现。importtensorflowastffromtensorflow.kerasimportModel,l... 查看详情

使用pytorch实现手写数字识别(代码片段)

使用Pytor##标题ch实现手写数字识别思路和流程分析准备数据,这些需要准备DataLoader构建模型,这里可以使用torch构造一个深层的神经网络模型的训练模型的保存,保存模型,后续持续使用模型的评估,使用测... 查看详情

「深度学习一遍过」必修18:基于pytorch的语义分割模型实现(代码片段)

...型基础上实现膨胀卷积 1自定义5层普通卷积 模型结构 pytorch代码 fromtor 查看详情

使用pytorch实现深度学习的主要流程(代码片段)

一、使用Pytorch实现深度学习的主要流程使用Pytorch进行深度学习的实现流程主要包含如下几个部分:1、预处理、后处理并确认网络的输入和输出2、创建Dataset3、创建DataLoader4、创建网络模型5、定义正向传播函数(forward... 查看详情

pytorch实现基于charrnn的文本分类与生成(代码片段)

Pytorch实现基于CharRNN的文本分类与生成标签:deep-learningpytorchnlp1简介本篇主要介绍使用pytorch实现基于CharRNN来进行文本分类与内容生成所需要的相关知识,并最终给出完整的实现代码。2相关API的说明pytorch框架中每种网络... 查看详情