UFLDL编程练习——Sparse Autoencoder

    这里把Sparse Autoencoder编程练习的代码和结果记录下来。

    UFLDL源代码 http://ufldl.stanford.edu/wiki/index.php/Exercise:Sparse_Autoencoder   


1. 部分代码 

Sparse Autoencoder的练习需要完成sampleIMAGES.m、sparseAutoencoderCost.m、computeNumericalGradient.m三个程序文件。

   主程序文件是train.m,先来看看train.m来对稀疏编码有个大致印象。

1.1 train.m(不需改动)

%% CS294A/CS294W Programming Assignment Starter Code%  
%
%%======================================================================
%% STEP 0: 设置一些参数,这里不需要修改
visibleSize = 8*8;     % 输入节点个数 
hiddenSize = 25;       % 输出节点个数
sparsityParam = 0.01;  % 隐层节点平均激活度,也就是教程里的稀疏性参数rho
lambda = 0.0001;       % 权重衰减参数       
beta = 3;              % 稀疏权值惩罚项       

%%======================================================================
%% STEP 1: 完成sampleIMAGES
%
%  采样完成后,display_newwork命令会显示其中的200个样本

patches = sampleIMAGES;
display_network(patches(:,randi(size(patches,2),200,1)),8);


%  参数随机初始化,theta是列向量(W1,W2,b1,b2)
theta = initializeParameters(hiddenSize, visibleSize);

%%======================================================================
%% STEP 2: 完成sparseAutoencoderCost
%
%  代价函数里需要计算平方误差代价、权值衰减项、稀疏惩罚三项。建议按以下步骤编写,
%  每写完一个进行一次梯度检验(step3)
%  (a) 先计算前向传播结果, 然后计算代价函数的平方误差项,再计算反向传播导数。
%      可以令lambda=beta=0,进行梯度检验确保平方误差代价计算正确
%  (b) 在代价函数和偏导中加入权重衰减项,进行梯度检验确保正确
%  (c) 添加稀疏惩罚项,进行梯度检验
%
%  运行成功后,可以尝试修改相关参数,如训练集大小、隐层节点数量、beta=lambda=0.

[cost, grad] = sparseAutoencoderCost(theta, visibleSize, hiddenS
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值