博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在AutoEncoder中使用tied weight的训练方法
阅读量:4078 次
发布时间:2019-05-25

本文共 513 字,大约阅读时间需要 1 分钟。

1:在传统的AutoEncoder中我们知道,输入层到隐层有一个权重W1和bias b1,隐藏到输出层也有一个权重W2和截距项b2,此时我们也知道W1和W2的转置的型是同样大小的。但是在传统的AutoEncoder中我们对于W1和W2是单独训练的。

2:在tied weight中也就是W1和W2是tied的,此时让W2的转置等于W1,也就是两个W其实是一样的,那么我们怎么做?因为如果初始化的时候让W2的转置等于W1,那么经过一次梯度下降由于W2上的grad和W1上的不一样,所以梯度下降一次之后,他们就不一样了怎么办呢?

3:网上找了很多,其实真正的做法并没有找到。后来翻看了别人的代码,发现了做法是这样子的:

4:初始化让W2的转置等于W1,第一次求梯度的时候,对于W2的梯度记到,暂时保存,比如用W2grad,接着计算W1的梯度,用W1grad来表示,那么返回的时候我们这样来返回,让W1grad+W2grad',作为W1的梯度,那么出去的时候就是和W1同型的了,在函数内部进行cost计算的时候还是根据W1,自动扩展一个W2即可。。

5:我觉得在第四部中也可以直接返回W1grad即可。。此时还是有b1和b2的哈。。

转载地址:http://sdini.baihongyu.com/

你可能感兴趣的文章
如何高效利用GitHub
查看>>
环境分支-git版本管理
查看>>
Spring AOP + Redis + 注解实现redis 分布式锁
查看>>
支付宝生活号服务号 用户信息获取 oauth2 登录对接 springboot java
查看>>
CodeForces #196(Div. 2) 337D Book of Evil (树形dp)
查看>>
uva 12260 - Free Goodies (dp,贪心 | 好题)
查看>>
uva-1427 Parade (单调队列优化dp)
查看>>
【设计模式】学习笔记14:状态模式(State)
查看>>
poj 1976 A Mini Locomotive (dp 二维01背包)
查看>>
斯坦福大学机器学习——因子分析(Factor analysis)
查看>>
linux对于没有写权限的文件如何保存退出vim
查看>>
IntelliJ IDEA 下的svn配置及使用的非常详细的图文总结
查看>>
【IntelliJ IDEA】idea导入项目只显示项目中的文件,不显示项目结构
查看>>
ssh 如何方便的切换到其他节点??
查看>>
JSP中文乱码总结
查看>>
Java实现DES加密解密
查看>>
HTML基础
查看>>
Java IO
查看>>
Java NIO
查看>>
Java大数据:Hbase分布式存储入门
查看>>