==========================================================================================

最近一直在看Deep Learning,各类博客、论文看得不少

但是说实话,这样做有些疏于实现,一来呢自己的电脑也不是很好,二来呢我目前也没能力自己去写一个toolbox

只是跟着Andrew Ng的UFLDL tutorial 写了些已有框架的代码(这部分的代码见github)

后来发现了一个matlab的Deep Learning的toolbox,发现其代码很简单,感觉比较适合用来学习算法

再一个就是matlab的实现可以省略掉很多数据结构的代码,使算法思路非常清晰

所以我想在解读这个toolbox的代码的同时来巩固自己学到的,同时也为下一步的实践打好基础

(本文只是从代码的角度解读算法,具体的算法理论步骤还是需要去看paper的

我会在文中给出一些相关的paper的名字,本文旨在梳理一下算法过程,不会深究算法原理和公式)

==========================================================================================

使用的代码:DeepLearnToolbox  ,下载地址:点击打开,感谢该toolbox的作者

==========================================================================================

今天介绍的呢是DL另一个非常重要的模型:SAE

把这个放在最后来说呢,主要是因为在UFLDL tutorial里已经介绍得比较详细了,二来代码非常简单(在NN的基础之上)

先放一张autoencoder的基本结构:

基本意思就是一个隐藏层的神经网络,输入输出都是x,属于无监督学习

==========================================================================================

基本代码

saesetup.m

function sae = saesetup(size)

foru = 2 : numel(size)

sae.ae{u-1} = nnsetup([size(u-1) size(u) size(u-1)]);

end

end

saetrain.m

function sae = saetrain(sae, x, opts)

fori = 1 : numel(sae.ae);

disp(['Training AE 'num2str(i)'/'num2str(numel(sae.ae))]);

sae.ae{i} = nntrain(sae.ae{i}, x, x, opts);

t = nnff(sae.ae{i}, x, x);

x = t.a{2};

%remove bias term

x = x(:,2:end);

end

end

其实就是每一层一个autoencoder,隐藏层的值作为下一层的输入

各类变形

为了不致于本文内容太少。。。现在单独把它的几个变形提出来说说

sparse autoencoder:

这就是ufldl讲的版本,toolbox中的代码和ufldl中练习的部分基本一致:

在nnff.m中使用:nn.p{i} = 0.99 * nn.p{i} + 0.01 * mean(nn.a{i}, 1);计算

在nnbp.m中使用

pi = repmat(nn.p{i}, size(nn.a{i}, 1), 1);

sparsityError = [zeros(size(nn.a{i},1),1) nn.nonSparsityPenalty * (-nn.sparsityTarget ./ pi + (1 - nn.sparsityTarget) ./ (1 - pi))];

计算sparsityError即可

denoising autoencoder:

denoising其实就是在autoencoder的基础上,给输入的x加入噪声,就相当于dropout用在输入层

toolbox中的也实现非常简单:

在nntrain.m中:

batch_x = batch_x.*(rand(size(batch_x))>nn.inputZeroMaskedFraction)

也就是随即把大小为(nn.inputZeroMaskedFraction)的一部分x赋成0,denoising autoencoder的表现好像比sparse autoencoder要强一些

Contractive Auto-Encoders:

这篇论文里也总结了一下autoencoder,感觉很不错

Contractive autoencoders的模型是:

其中:

 hj是表示hidden layer的函数,用它对x求导

论文里说:这个项是

encourages the mapping to the feature space to be contractive in the neighborhood of the training data

具体的实现呢是:

代码呢参看:论文作者提供的:点击打开链接

主要是

jacobian(self,x):

_jacobi_loss():

_fit_reconstruction():

这几个函数和autoencoder有出入,其实也比较简单,就不细讲了

总结:

总的来说,autoencoder感觉是DL中比较好理解的一部分,所以介绍内容不长

可能你也发现了,Toolbox里还有一个文件夹叫CAE,不过这个CAE是Convolutional Auto-Encoders

matlab sae模型,matlab的Deep Learning的toolbox 中的SAE算法相关推荐

  1. ufldl matlab 工具箱,matlab的Deep Learning的toolbox 中的SAE算法

    最近一直在看Deep Learning,各类博客.论文看得不少 但是说实话,这样做有些疏于实现,一来呢自己的电脑也不是很好,二来呢我目前也没能力自己去写一个toolbox 只是跟着Andrew Ng的 ...

  2. ism matlab,ISM模型matlab实现.ppt

    ISM模型matlab实现 ISM模型的matlab实现 张文龙.赵洋.张强.滕凤君 4.课本例题程序验证请输入矩阵维数:7请输入邻接矩阵: 1 1 1 0 1 1 0 0 1 0 0 1 1 0 0 ...

  3. matlab状态空间模型,Matlab做状态空间辨识2

    转载自了凡春秋USTChttps://chunqiu.blog.ustc.edu.cn/?p=334 命令行辨识状态空间模型 准备工作: 构造iddata对象(输入输出数据对象)或frd.idfrd对 ...

  4. 李宏毅机器学习笔记4:Brief Introduction of Deep Learning、Backpropagation(后向传播算法)...

    李宏毅老师的机器学习课程和吴恩达老师的机器学习课程都是都是ML和DL非常好的入门资料,在YouTube.网易云课堂.B站都能观看到相应的课程视频,接下来这一系列的博客我都将记录老师上课的笔记以及自己对 ...

  5. deep learning 深度学习中英文版下载地址

    度学习权威Yoshua Bengio和GAN之父Ian Goodfellow等人合著的DeepLearning经典教程<Deep Learning>.废话不多说,直接上链接. 中文版pdf ...

  6. matlab版本的cnn代码,Deep Learning学习 之 CNN代码解析(MATLAB)

    MATLAB实现CNN一般会用到deepLearnToolbox-master.但是根据Git上面的说明,现在已经停止更新了,而且有很多功能也不太能够支持,具体的请大家自习看一看Git中的README ...

  7. Gompertz模型绘图 matlab,Logistic模型matlab求解

    Logistic模型求解怎么用matlab求解啊? 悬赏分:100 - 解决时间:2008-11-17 23:09 已知 x=0:1:12 y=[43.65 109.86 187.21 312.67 ...

  8. matlab加速模型,matlab仿真加速问题

    matlab2015b中自带的超级电容的模型,在默认加速仿真的情况下,总是出问题,但是切换到"normal"模式就没出现问题. 11:23 PM Elapsed: 7 sec Bu ...

  9. Deep Learning for Computer Vision with MATLAB and cuDNN

    转载自:Deep Learning for Computer Vision with MATLAB and cuDNN | Parallel Forall http://devblogs.nvidia ...

最新文章

  1. 来了个假阿里? | 每日趣闻
  2. 【TypeScript】探索 var 和 let 关键字之间的差异
  3. java.lang.IllegalStateException: ViewStub must have a non-null ViewGroup viewParent
  4. 你的手机上未安装应用程序”的解决方案
  5. 散列冲突与作为特征值的散列
  6. git删除本地分支、删除远程分支 复制分支
  7. 人脸识别智能会议签到系统
  8. 系统学习深度学习(四十三)--GAN简单了解
  9. 从事游戏开发怎么入门
  10. android录制视频设置分辨率,Android录制视频的全面屏适配
  11. elemen点击时,修改走马灯的播放索引
  12. js刷新页面得重新加载和页面的刷新
  13. 使用CLIP构建视频搜索引擎
  14. 洪金宝坦言婚姻全靠“忍”。网友:好男人啊
  15. 基本shell命令学习
  16. 基于Java的网络流量分析软件设计
  17. 一种利用电磁能产生的共振引力波实现超光速飞行的机器
  18. 网络最强CASE工具 + 经典UML学习电子资下载汇总
  19. axios接口报错-参数类型错误解决
  20. RabbitMQ 正确使用姿势

热门文章

  1. 每个人都有一个“内外引擎”
  2. 【Vegas2007】11月23日-螃蟹的做法(蒸煮两法)
  3. 使用mock解决测试中依赖第三方接口的问题
  4. 内存溢出和内存泄漏的区别、产生原因以及解决方案
  5. 【转】modulenotfounderror: no module named ‘matplotlib._path‘问题的解决
  6. 一种解决 MacBook 里的 App Store 无法登录的问题
  7. 如何在Java中比较日期? [重复]
  8. 对于HTML表单输入字段,disabled =“ disabled”和readonly =“ readonly”有什么区别?
  9. 如何在SQL中使用JOIN执行UPDATE语句?
  10. 简单时间复杂度大O记法