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

deepLearnToolbox-master是一个深度学习matlab包,里面含有很多机器学习算法,如卷积神经网络CNN,深度信念网络DBN,自动编码AutoEncoder(堆栈SAE,卷积CAE)的作者是 Rasmus Berg Palm (rasmusbergpalm@)

代码下载:外链网址已屏蔽

这里我们介绍deepLearnToolbox-master中的CNN部分。

函数

调用关系为:

该模型使用了mnist的数字mnist_uint8.mat作为训练样本,作为CNN的一个使用样例,每个样本特征为一个28×28=的向量。

网络结构为:

Test_example_CNN

Test_example_CNN:

1设置CNN的基本参数规格,如卷积、降采样层的数量,卷积核的大小、降采样的降幅

2 cnnsetup函数 初始化卷积核、偏置等

3 cnntrain函数 训练cnn,把训练数据分成batch,然后调用

3.1cnnff 完成训练的前向过程

3.2 cnnbp计算并传递神经网络的error,并计算梯度(权重的修改量)

3.3 cnnapplygrads 把计算出来的梯度加到原始模型上去

4 cnntest 函数,测试当前模型的准确率

该模型采用的数据为mnist_uint8.mat,含有70000个手写数字样本其中60000作为训练样本,10000作为测试样本。

把数据转成相应的格式,并归一化。

load mnist_uint8;

train_x = double(reshape(traub.x',28,28,60000))/255;

test_x = double(reshape(test_x',28,28,10000))/255;

train_y = double(train_y');

test_y = double(test_y');

设置网络结构及训练参数

%% ex1 Train a 6c-2s-12c-2s Convolutional neural network

%% will run 1 epoch in about 200 second and get around 11% error

%% with 100 epochs you' will get around 1.2% error

rand('state',0);

cnn.layers = {

struct('type','i') %input layer

struct('type','c','outputmaps',6,'kernelsize',5) % convolution layer

struct('type','s','scale',2) %sub sampling layer

struct('type','c','outputmaps',12,'kernelsize',5) % convolutional layer

struct('type','s','scale',2) % sub sampling layer

%% 训练选项,alpha学习效率(不用),batchsiaze批训练总样本的数量,numepoches迭代次数

opts.alpha = 1;

opts.batchsize = 50;

opts.numepochs = 1;

初始化网络,对数据进行批训练,验证模型准确率。

cnn = cmmsetup(cnn, train_x, train_y);

cnn = cnntrain(cnn, train_x, train_y, opts);

[er, bad] = cnntest(cnn, test_x, test_y);

绘制均方误差曲线

%plot mean squared error

figure; plot(cnn.rL);

Cnnsetup.m

cnntrain.m

cnnff.m

cnnbp.m

cnnapplygrads.m

该函数完成权重修改,更新模型的功能

1更新特征抽取层的权重 weight+bias

2 更新末尾单层感知机的权重 weight+bias

function net = cnnapplygrads(net, opts) %使用梯度

%特征抽取层(卷机降采样)的权重更新

for l = 2 : numel(net.layers) %从第二层开始

if strcmp(net.layers{l}.type, 'c')%对于每个卷积层

for j = 1 : numel(net.layers{l}.a)%枚举该层的每个输出

%枚举所有卷积核net.layers{l}.k{ii}{j}

for ii = 1 : numel(net.layers{l - 1}.a)%枚举上层的每个输出

net.layers{l}.k{ii}{j} = net.layers{l}.k{ii}{j} - opts.alpha * met.layers{l}.dk{ii}{j};

end

%修正bias

net.layers{l}.b{j} = net.layers{l}.b{j} - opts.alpha * net.layers{l}.db{j};

end

end

end

%单层感知机的权重更新

net.ffW = net.ffW - opts.alpha * net.dffW;

net.ffb = net.ffb - opts.alpha * net.dffb;

end

cnntest.m

验证测试样本的准确率

%验证测试样本的准确率

function [er, bad] = cnntest(net, x, y)

% feedforward

net = cnnff(net, x);

[~, h] = max(net.o);

[~, a] = max(y);

%find(x) FIND indices of nonzero elements

bad = find(h ~= a); %计算预测错误的样本数量

er = numel(bad) / size(y, 2); % 计算错误率

end

matlab版本的cnn代码,Deep Learning学习 之 CNN代码解析(MATLAB)相关推荐

  1. Deep Learning学习 之 CNN代码解析(MATLAB)

    Test_example_CNN Test_example_CNN: 1设置CNN的基本参数规格,如卷积.降采样层的数量,卷积核的大小.降采样的降幅 2 cnnsetup函数 初始化卷积核.偏置等 3 ...

  2. 网上某位牛人的deep learning学习笔记汇总

    目录(?)[-] 作者tornadomeet 出处httpwwwcnblogscomtornadomeet 欢迎转载或分享但请务必声明文章出处 Deep learning一基础知识_1 Deep le ...

  3. 笔记 | 吴恩达Coursera Deep Learning学习笔记

    向AI转型的程序员都关注了这个号☝☝☝ 作者:Lisa Song 微软总部云智能高级数据科学家,现居西雅图.具有多年机器学习和深度学习的应用经验,熟悉各种业务场景下机器学习和人工智能产品的需求分析.架 ...

  4. FIT5215 Deep learning学习经验贴

    一.课程简介 这门课程包含三部分,第一部分是上午的lecture,这部分主要是老师上课讲课,duan老师的课讲得还是不错的,值得大家好好听一听.第二部分是Tutorial,这部分主要是助教讲课,主要锻 ...

  5. CV视觉论文Deep learning学习笔记(一)

    论文介绍和监督学习(introduction of paper and supervision of learning) 1. 论文介绍和作者介绍 作者:论文作者是2018年图灵奖得主yoshua B ...

  6. 【Deep Learning学习笔记】Deep learning for nlp without magic_Bengio_ppt_acl2012

    看完180多页的ppt,真心不容易.记得流水账如下: Five reason to explore Deep Learning: 1. learning representation; 2. the ...

  7. [Deep Learning]任意层cnn的matlab版本实现

    之前实现了一层的卷积神经网络,又实现了两层的卷积神经网络,接下来把cnn扩展到任意层就不难了. 这难道就是传说中的"道生一,一生二,二生三,三生万物"么?=.= 代码还是在gith ...

  8. 【deep learning学习笔记】注释yusugomori的LR代码 --- LogisticRegression.cpp

    模型实现代码,关键是train函数和predict函数,都很容易. #include <iostream> #include <string> #include <mat ...

  9. Deep Learning学习 之 卷积神经网络(文字识别系统LeNet-5)

    部分预备知识可以先看博文,统一了一些专业名词. 原文摘自,在此文中对原文增加了一些注释和修改,统一了与之前博文的专业名词说法,有助于理解. !!!如果读者发现一些数学符号后面有一些奇怪的竖线,那是CS ...

最新文章

  1. 2022-2028年中国云服务市场深度调研及投资前景预测报告
  2. Java类加载器(一)——类加载器层次与模型
  3. python operator __gt___Python operator.gt方法代码示例
  4. 笔记本电脑自带麦克风吗_想让声音变得好听吗,不花一分钱,让你的电脑拥有外置麦克风...
  5. keil uvisoin软件出现闪退和打开工程以前添加的c文件上面出现黄色感叹号
  6. 不是一流大学毕业,却通过自学软件测试,进了阿里年薪初始22K
  7. 通过CloudXplorer打断异常的VHD lease连接
  8. Excel VBA 宏编程入门
  9. python excel区域截图
  10. 延长计算机屏幕显示时间,如何设置电脑显示屏保时间
  11. Android手机获取外网ip(by 星空武哥)
  12. 关于偏微分、全微分总结
  13. 我对于微信文章的感悟
  14. 成都拓嘉辰丰电商:如何处理拼多多物流服务异常
  15. angular使用jqwidgets注意事项
  16. java 怎样判断拼图是否可还原_拼图游戏可解性判断,自动生成可解拼图
  17. python excel 饼图 简书_Python实现绘画多个饼图
  18. 建筑企业应采用电子招投标的10个理由
  19. 一个千兆电口和自协商的问题
  20. jackson 入门

热门文章

  1. 为什么黑客用python-为什么如此多的黑客都用python?
  2. python操作excel表格-Python自动化办公之操作Excel文件
  3. python编程案例教程答案-Python程序开发案例教程
  4. python入门到精通需要学多久-Python从入门到精通只需要一个月就够了!
  5. python读文件操作-python文件操作读取文件写入文件
  6. python中and与or的执行顺序-python 代码运行顺序问题?
  7. php执行删除语句代码,ThinkPHP之数据删除和执行原生SQL语句
  8. LA4238 Area of Polycubes(立方体的表面积)
  9. UVa11300 Spreading the Wealth(数学问题)
  10. MyBatis Generator 详解