前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自编码器

自编码器

作者头像
平凡的学生族
发布2019-06-21 15:14:16
7060
发布2019-06-21 15:14:16
举报
文章被收录于专栏:后端技术后端技术

各种自编码器

代码 https://www.atyun.com/16921.html

堆叠自编码器

一般用来作逐层无监督预训练,但自从dropout、relu等提出后,已经没什么人用了。

去噪自编码器

对于常见的分类任 务,一般分为以下两个阶段:

  • layer-wise pre-training (逐层预训练)
  • fune-tuning (微调)

注意到,前述的各种SAE,本质上都是非监督学习,SAE各层的输出都是原始数据的不同表达。对 于分类任务,往往在SAE顶端再添加一分类层(如Softmax层),并结合有标注的训练数据,在误 差函数的指导下,对系统的参数进行微调,以使得整个网络能够完成所需的分类任务。

对于微调过程,即可以只调整分类层的参数(此时相当于把整个SAE当做一个feature extractor),也可以调整整个网络的参数(适合训练数据量比较大的情况)。

稀疏自编码器

就是在损失函数加入一个项,表示神经元

代码 https://blog.csdn.net/m0_37744293/article/details/70767843

关键代码部分

代码语言:javascript
复制
# Construct model
P=0.1
beta=1
encoder_op = encoder(X)
decoder_op = decoder(encoder_op)

Pj=tf.reduce_mean(encoder_op,0)
sparse_cost=tf.reduce_mean(P*tf.log(P/Pj)+(1-P)*tf.log((1-P)/(1-Pj)))

# Prediction
y_pred = decoder_op
# Targets (Labels) are the input data.
y_true = X

# Define loss and optimizer, minimize the squared error
cost = tf.reduce_mean(tf.pow(y_true - y_pred, 2))+sparse_cost*beta

Pj是一个batch的每个神经元的平均激活值

逐层贪婪预训练

参考深度学习: greedy layer-wise pre-training (逐层贪婪预训练)

  • 什么Autoencoder、RBM,现在都已经没人用了。现在都用relu和dropout等。
  • 现在所常说的 pre-training (预训练) ,其实 专指 migration learning (迁移学习),那是一种无比强大又省事儿的trick。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.06.20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 各种自编码器
  • 稀疏自编码器
  • 逐层贪婪预训练
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档