作家
登录

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

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

3, stride=2, padding=1),  # b, 8, 3, 3 
  •             nn.ReLU(True), 
  •             nn.MaxPool2d(2, stride=1)  # b, 8, 2, 2 
  •         ) 
  •         self.decoder = nn.Sequential( 
  •             nn.ConvTranspose2d(8163, stride=2),  # b, 16, 5, 5 
  •             nn.ReLU(True), 
  •             nn.ConvTranspose2d(1685, stride=3, padding=1),  # b, 8, 15, 15 
  •             nn.ReLU(True), 
  •             nn.ConvTranspose2d(812, stride=2, padding=1),  # b, 1, 28, 28 
  •             nn.Tanh() 
  •         ) 
  •  
  •     def forward(self, x): 
  •         x = self.encoder(x) 
  •         x = self.decoder(x) 
  •         return x 
  • 这里应用了 nn.ConvTranspose2d(),这可以看作是卷积的反操作,可以在某种意义上看作是反卷积。

    我们应用卷积收集获得的最后生成的图片效不雅会更好,具体的图片效不雅我就不再这里放了,可以在我们的github上看到图片的┞饭示。github 地址:

    http://t.cn/RK5gxpM

    变分主动编码器(Variational Auto Encoder)

    变分编码器是主动编码器的进级版本,其构造跟主动编码器是类似的,也由编码器和解码器构成。

    然则如许我们其实并不克不及随便率性生成图片,因为我们没有办法本身去构造隐蔽向量,我们须要经由过程一张图片输入编码我们才知道获得的隐含向量是什么,这时我们就可以经由过程变分主动编码器来解决这个问题。

    其实袈洵理特别简单,只须要在编码过程给它增长一些限制,迫使其生成的隐含向量可以或许粗略的遵守一个标准正态分布,这就是其与一般的主动编码器最大年夜的不合。

    如许我们生成一张新图片就很简单了,我们只须要给它一个标准正态分布的随机隐含向量,如许经由过程解码器就可以或许生成我们想要的图片,而不须要给它一张原始图片先编码。

    我们可以给出KL divergence 的公式

    这里变分编码器应用了一个技能“从新参数化”来解决 KL divergence 的计算问题。


      推荐阅读

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

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


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

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

    关键词: 探索发现

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

    网友点评
    自媒体专栏

    评论

    热度

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