DeepLearnToolbox代码详解——SAE,DAE模型

一:引言.sae,dae,dropout模型简介

上面提到的三个模型都是在经典的多层神经网络的基础上加深构架得到;例如sae(Stack autoencoder)就是理堆叠多个autoencoder,然后使用fine_tuning过程;dae(Denoising autoencoder)是在标准的sae基础上给输入数据加入噪声,利用污染后的数据进行sae;dropout 则是随机忽略隐层节点来训练多个不同的模型,然后通过模型平均来预测。

下面就详细讲解一下这个sae框架的训练过程,以及调用函数的说明。

二:实例讲解

1.  试验准备:

DeepLearnToolbox-master代码:https://github.com/rasmusbergpalm/DeepLearnToolbox

2. 文件配置:

2.1 首先打开新建的test_sae.m文件;

2.2 然后把current folder,窗口转到……matlabdlToolBox\DeepLearnToolbox-master

2.3 在command 窗口输入:addpath(genpath('.'));

2.4 打开test_sae.m,运行就ok了

2.5 等着出结果

3.网络结构说明

本文以minist手写数字识别为例,输入数据为784,即visible层为784个节点。

假设我们训练的网络结构为:784——200—— 100—— 10,也就是说有4层,一个输入层,2个中间隐层;1个输出隐层,来进行预测分类。

网络结构如图:


4.主函数代码:test_sae.m

clear all; close all; clc;

%% //导入数据

load mnist_uint8;

train_x = double(train_x)/255;

test_x  = double(test_x)/255;

train_y = double(train_y);

test_y  = double(test_y);

 

%%一:采用autoencoder进行预训练

rng(0);%高版本的matlab可以使用这个语句,低版本会出错

sae = saesetup([784 200 100]);

sae.ae{1}.activation_function      = 'sigm';

sae.ae{1}.learningRate             = 1;

sae.ae{1}.inputZeroMaskedFraction  = 0.;

sae.ae{2}.activation_function      = 'sigm';

sae.ae{2}.learningRate             = 1;

sae.ae{2}.inputZeroMaskedFraction  = 0.;

opts.numepochs =   1;

opts.batchsize = 100;

visualize(sae.ae{1}.W{1}(:,2:end)')

%二:fine_tuning过程

% Use the SDAE to initialize a FFNN

nn = nnsetup([784 200 100 10]);

nn.activation_function             = 'sigm';

nn.learningRate                    = 1;

%add pretrained weights

nn.W{1} = sae.ae{1}.W{1};

nn.W{2} = sae.ae{2}.W{1};

% Train the FFNN

opts.numepochs =   1;

opts.batchsize = 100;

nn = nntrain(nn, train_x, train_y, opts);

[er, bad] = nntest(nn, test_x, test_y);

str = sprintf('testing error rate is: %f',er);

disp(str)


三:pre_training阶段代码详解

3.1:网络结构建立

    Sae网络就是堆叠多个autoencoder网络,所以此网络结构由2个autoencoder构成,分别是:v—h1—v和h1—h2—h1.

此处主要利用saesetup函数来实现,

3.1.1  Saesetup函数说明

  • 6
    点赞
  • 112
    收藏
    觉得还不错? 一键收藏
  • 31
    评论
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值