用UFLDL的方法改写Denoising Autoencoder

本文作者在学习Autoencoder的过程中,尝试使用UFLDL的方法实现Denoising Autoencoder。通过对比DeepLearnToolbox的代码,发现在加入50%的噪声后,尽管出现了错误率过高的问题,但自编代码的结果显示,Denoising Autoencoder的识别错误率从9.3%降低到7.3%,表明Denoising确实能改善模型性能。
摘要由CSDN通过智能技术生成

最近在学Autoencoder的相关知识,已经学习完DFLDL的Sparse_Autoencoder相关知识,想学学Denoising Autoencoder和contractive Autoencoder。

本篇先说说Denoising Autoencoder的学习。

参考大神tornadomeet的博客(http://www.cnblogs.com/tornadomeet/p/3261247.html),我准备自己尝试第一个实验。下载完DeepLearnToolbox并且自己把代码test_example_SAE跑了一遍后发现,没有Denoising时候,识别结果error为0.10,然后加上50%的Denoising后,就出现“Too big error”的警告,原来是识别结果error超过0.16,而代码的最后一句为

assert(er < 0.16, 'Too big error')。

但是tornadomeet大神不是说加上50%的Denoising后test的结果会更好吗?仔细对比了一下发现,toolbox里面的代码网络结构是[784 100 10]的,也就是只有一层hidden layer,代码如下:

function test_example_SAE
load ../data/mnist_uint8;

train_x = double(train_x)/255;
test_x  = double(test_x)/255;
train_y = double(train_y);
test_y  = double(test_y);

addpath('../SAE')
addpath('../NN')

%%  ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN
%  Setup and train a stacked denoising autoencoder (SDAE)
rand('state',0)
sae = saesetup([784 100]);
sae.ae{1}.activation_function       = 'sigm';
sae.ae{1}.learningRate              = 1;
sae.ae{1}.inputZeroMaskedFraction   = 0.5;
opts.numepochs &
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值