作家
登录

深度学习自动编码器还能用于数据生成?这篇文章告诉你答案

作者: 来源: 2017-07-10 15:03:28 阅读 我要评论

), 
  •             nn.ReLU(True), 
  •             nn.Linear(64128), 
  •             nn.ReLU(True), 
  •             nn.Linear(12828*28), 
  •             nn.Tanh() 
  •         ) 
  •  
  •     def forward(self, x): 
  •         x = self.encoder(x) 
  •         x = self.decoder(x) 
  •         return x 
  • 大年夜膳绫擎的图中,我们可以或许看到两个部分,第一个部分是编码器(Encoder),第二个部分是解码器(Decoder),编码器和解码器都可所以随便率性的模型,平日我们应用神经收集模型作为编码器和解码器。输入的数据经由神经收集降维到一个编码(code),接着又经由过程别的一个神经收集去解码获得一个与输入原数据一模一样的生成数据,然后通以前比较这两个数据,最小化他们之间的差别来练习这个收集中编码器和解码器的参数。当这个过程练习完之后,我们可以拿出这个解码器,随机传入一个编码(code),欲望经由过程解码器可以或许生成一个和原数据差不多的数据,膳绫擎这种钤记个例子就是欲望可以或许生成一张差不多的图片。

    起首我们构建一个简单的独裁感知器来实现一下。

    这里我们定义了一个简单的4层收集作为编码器,中心应用ReLU激活函数,最后输出的维度是3维的,定义的解码器,输入三维的编码,输出一个28x28的图像数据,特别要留意最后应用的激活函数是Tanh,这个激活函数可以或许将最后的输出转换到-1 ~1之间,这是因为我们输入的图片已经变换到了-1~1之间了,这里的输出必须和其对应。

    练习过程也比较简单,我们应用最小均方误差来作为损掉函数,比较生成的图片与原始图片的每个像素点的差别。

    1. class VAE(nn.Module): 
    2.     def __init__(self): 
    3.         super(VAE, self).__init__() 
    4.  
    5.         self.fc1 = nn.Linear(784400
    6.         self.fc21 = nn.Linear(40020
    7.         self.fc22 = nn.Linear(40020
    8.         self.fc3 = nn.Linear(20400
    9.         self.fc4 = nn.Linear(400784
    10.  
    11.     def encode(self, x): 

        推荐阅读

        MySQL数据类型--------整数类型实战

      * 查看表中插入的数据值 1. 背景* MySQL支撑SQL标准整数类型整数(或INT)和SMALLINT。作为标准的扩大,MySQL还支撑整数类型TINYINT、MEDIUMINT和BIGINT2. 整数类型所需的存储和值范围 >>>详细阅读


      本文标题:深度学习自动编码器还能用于数据生成?这篇文章告诉你答案

      地址:http://www.17bianji.com/lsqh/36114.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)