Train Stacked Autoencoders for Image Classification

1. 加载数据到内存

[train_x, train_y] = digitTrainCellArrayData;

% 并随机选择显示 100 副图像,
n = 100;
idx = randi([1, size(train_x, 2)], n);
for i=1:n
subplot(10, 10, i), imshow(train_x{idx(i)});
end

2. 定义并训练 autoencoder 网络模型

简单起见,这里仅给出一个具有一个单隐层(隐层的神经元节点数为 100)的堆栈式自编码器,

rng('default');
num_hid1 = 100; % 因为是自编码器,也属于无监督学习算法,因此不需要目标值 train_y 的参与
ae1 = trainAutoencoder(train_x, num_hid1, ...
'MaxEpochs', 400, ...
'L2WeightRegularization', .004, ...
'SparsityRegularization', 4, ...
'SparsityProportion', .15, ...
'ScaleData', false);

定义网络拓扑结构的过程,也是训练的过程。

3. 过程及中间变量的可视化

  • 可视化模型拓扑:view(ae1)
  • 可视化学到的权值矩阵:plotWeights(ae1)

4. 训练第二个 autoencoder

% 使用第一个自编码器得到其对应的压缩编码,
feat1 = encode(ae1, train_x);
num_hid2 = 50;
ae2 = trainAutoencoder(feat1, num_hid2, ...
'MaxEpochs', 100, ...
'L2WeightRegularization', .002, ...
'SparsityRegularization', 4, ...
'SparsityPropotion', .1, ...
'ScaleData', false);
view(ae2); % 使用第二个自编码器得到其对应的压缩编码
feat2 = encode(ae2, feat1);

5. 应用于分类问题

softnet = trainSoftmaxLayer(feat2, train_y, 'MaxEpochs', 400);
view(softnet)

6. 组建 stacked autoencoder

deepnet = stack(ae1, ae2, softnet);
view(deepnet)

matlab 实现 stacked Autoencoder 解决图像分类问题的更多相关文章

  1. 栈式自动编码器(Stacked AutoEncoder)

    起源:自动编码器 单自动编码器,充其量也就是个强化补丁版PCA,只用一次好不过瘾. 于是Bengio等人在2007年的  Greedy Layer-Wise Training of Deep Netw ...

  2. 4. Stacked AutoEncoder(堆栈自动编码器)

    1. AutoEncoder介绍 2. Applications of AutoEncoder in NLP 3. Recursive Autoencoder(递归自动编码器) 4. Stacked ...

  3. terminal崩溃打不开的一种原因以及ubuntu下matlab权限不够的解决办法

    为了解决点击matlab图标闪退的问题,我往.bashrc添加了如下命令: source /usr/local/MATLAB/R2015b/bin/matlab 结果导致打开新的terminal闪退. ...

  4. C#调用matlab出错r6034错误解决方法[转载]

    在c#调用MATLAB时,在运行第一次会出现r6034错误. 解决方法如下: 1.在MCR安装目录下D:\Program Files\MATLAB\MATLAB Compiler Runtime\v7 ...

  5. MATLAB安装libsvm无法使用解决办法(转)

    buaasuozi  这是原作者: 安装libsvm 不成功有可能是你的MATLAB版本或者是编译文件版本的问题,但是不要急着换其他版本....说不定就有别的解决办法呢 首先感谢Lin教授及其实验室提 ...

  6. 不用写代码就能实现深度学习?手把手教你用英伟达 DIGITS 解决图像分类问题

    2006年,机器学习界泰斗Hinton,在Science上发表了一篇使用深度神经网络进行维数约简的论文 ,自此,神经网络再次走进人们的视野,进而引发了一场深度学习革命.深度学习之所以如此受关注,是因为 ...

  7. MATLAB与Carsim联合仿真时提示matlab not found的解决方法(CarSim在联合仿真时提示找不到MATLAB的解决方法)

    CarSim8.02并没有提供选择联合仿真的MATLAB/Simulink的版本的功能,CarSim总是与最后安装的MATLAB/Simulink进行联合仿真,如果安装有多个matlab版本则只打开最 ...

  8. matlab 相同函数名解决

    http://jingyan.baidu.com/article/1612d500a23a8ce20e1eee07.html

  9. matlab下利用K-Means进行图像分类

    FIRST & BEST SOLUTION clear all; clc; I_rgb=imread('dog.jpg'); figure();imshow(I_rgb);title('原始图 ...

随机推荐

  1. 读《互联网创业password》之随想

    活动地址:http://blog.csdn.net/blogdevteam/article/details/38657235. 现如今.互联网已经深深的影响了中国人的日常生活习惯,曾经那种通过网络进行 ...

  2. 让ie6 7 8 9支持原生html5 websocket

      让ie6 7 8 9支持原生html5 websocket   从github上的 web-socket-js(socket.io好像也是用这个做的他们的flash替代传输方式)改过来的.不过值得 ...

  3. scrapy--介绍

    ​ Scrapy一个开源和协作的框架,其最初是为了页面抓取所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据.但目前Scrapy的用途十分广泛,可用于如数据挖掘.监测和自动化测试等领 ...

  4. mybatis中整合ehcache缓存框架的使用

    mybatis整合ehcache缓存框架的使用 mybaits的二级缓存是mapper范围级别,除了在SqlMapConfig.xml设置二级缓存的总开关,还要在具体的mapper.xml中开启二级缓 ...

  5. (转)Oracle EXP-00091解决方法

    转自:http://blog.csdn.net/dracotianlong/article/details/8270136 EXP-: 正在导出有问题的统计信息. . . 正在导出表 WF_GENER ...

  6. 宏定义#define整理

    一.宏定义#define 优点:一方面可以节省程序的空间上的篇幅,另外,恰当地使用宏定义可提高程序的时间效率.代码可以写的通俗易懂.可以提高程序的清晰性.可读性,使于修改移植等. 缺点:宏定义的使用实 ...

  7. 实现span设置宽度(行内元素本来不支持调宽度高度这些样式)(变成行内块元素:display:inline-block;)

    实现span设置宽度(行内元素本来不支持调宽度高度这些样式)(变成行内块元素:display:inline-block;) 一.总结 1.将span从行内元素变成行内快元素就可以调了: 设置样式的时候 ...

  8. Android 中AIDL的使用与理解

    AIDL的使用: 最常见的aidl的使用就是Service的跨进程通信了,那么我们就写一个Activity和Service的跨进程通信吧. 首先,我们就在AS里面新建一个aidl文件(ps:现在AS建 ...

  9. C语言结构体的字节对齐原则

    为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据 ...

  10. fatfs的设置

    官方网址:file:///E:/%E5%8D%95%E7%89%87%E6%9C%BA/FATFS/ff13a/documents/doc/config.html 关于多个文件同时打开的配置::在ff ...