matlab cnn 实例,Deep Learning学习 之 CNN代码解析(MATLAB)(示例代码)

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

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

代码下载:https://github.com/rasmusbergpalm/DeepLearnToolbox

95e627c74c64d60405cf08b935666a28.png

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

函数

a459559388598bba9b9eebfee0feb570.png

调用关系为:

793de4b60f5fc344138561759f36929a.png

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

网络结构为:

ff21216352414d2412d7ce1224b4714d.png

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,

  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值