博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Matlab图像识别/检索系列(5)—10行代码完成深度学习网络之CNN/Autoencoder
阅读量:7276 次
发布时间:2019-06-29

本文共 2665 字,大约阅读时间需要 8 分钟。

Matlab2017b中增加了神经网络工具箱Neural Network Toolbox,许多深度学习网络用一两个命令就可以实现,大大简化了程序实现工作。

1. 使用trainNetwork训练CNN并分类

%exam1.m    load digitTrainSet;    %创建CNN网络    layers = [imageInputLayer([28 28 1],'Normalization','none');                        convolution2dLayer(5,20);                        reluLayer();                        maxPooling2dLayer(2,'Stride',2);                        convolution2dLayer(5,16);                        reluLayer();                        maxPooling2dLayer(2,'Stride',2);                        fullyConnectedLayer(256);                        reluLayer();                        fullyConnectedLayer(10);                        softmaxLayer();                        classificationLayer()];    %设置网络训练方式    opts = trainingOptions('sgdm');    %训练网络    net = trainNetwork(XTrain,TTrain,layers,opts);    load digitTestSet;    %对测试数据进行分类    [YTest,scores] = classify(net,XTest);    accuracy = sum(YTest == TTest)/numel(TTest);

该示例使用trainNetwork训练CNN网络,该函数用法为:

trainedNet = trainNetwork(X,Y,layers,options)

X为输入数据,Y为类别标记,categorical类型。

2.使用trainAutoencoder训练自编码器

%exam2.m    [X,T] = wine_dataset;    hiddenSize = 10;    %训练第一层自编码器    autoenc1 = trainAutoencoder(X,hiddenSize,...            'L2WeightRegularization',0.001,...            'SparsityRegularization',4,...            'SparsityProportion',0.05,...            'DecoderTransferFunction','purelin');    %使用自编码器对输入数据进行编码    features1 = encode(autoenc1,X);    hiddenSize = 10;    %对第一层编码器输出再训练自编码器    autoenc2 = trainAutoencoder(features1,hiddenSize,...            'L2WeightRegularization',0.001,...            'SparsityRegularization',4,...            'SparsityProportion',0.05,...            'DecoderTransferFunction','purelin',...            'ScaleData',false);    %对第一层编码器输出进行编码    features2 = encode(autoenc2,features1);    %对第二层编码器输出训练Softmax层    softnet = trainSoftmaxLayer(features2,T,'LossFunction','crossentropy');    %构建深度网络    deepnet = stack(autoenc1,autoenc2,softnet);    %训练深度网络    deepnet = train(deepnet,X,T);    %使用训练出的网络计算输入数据属于各类别的概率类型    wine_type = deepnet(X);    plotconfusion(T,wine_type);

trainAutoencoder的用法为:

autoenc = trainAutoencoder(X,hiddenSize)

hiddensize表示隐含层大小,返回值autoenc是类型为Autoencoder的超类。其属性值如下图所示:

Matlab图像识别/检索系列(5)—10行代码完成深度学习网络之CNN/Autoencoder

3. 使用patternnet函数

%exam3.m    clear;    [x,t] = iris_dataset;    %创建模式识别网络    net = patternnet(1000);    %训练网络    net = train(net,x,t);    %显示网络结构    view(net)    %计算x属于各类的概率    y = net(x);    %计算网络性能    perf = perform(net,t,y);    %得出类别标签    classes = vec2ind(y);

patternnet是神经网络工具箱的自带函数,用于创建模式识别网络,用法为:

patternnet(hiddenSizes,trainFcn,performFcn)

trainFcn表示训练函数,默认值为‘trainscg’,performFcn表示损失函数,默认值为‘crossentropy’。

转载于:https://blog.51cto.com/8764888/2053926

你可能感兴趣的文章
10大iOS开发者最喜爱的类库
查看>>
合并数组去重
查看>>
Windows使用MinGW_w64安装gcc
查看>>
Java URLClassLoader实现插件功能开发
查看>>
Thread线程的停止与Timer定时器的停止方法
查看>>
spring MVC自定义action名称
查看>>
python如何识别字符串有多少个中文字符
查看>>
MyEclipse10安装checkStyle与findBugs插件及基本使用
查看>>
MAC 安装更新 ANT
查看>>
微软新ML框架 interpret-尝试
查看>>
创建可序列化的自定义数据结构
查看>>
ios SDWebImage
查看>>
innobackupex部分备份
查看>>
mongodb查询速度慢是什么原因?
查看>>
shell top解析
查看>>
Spring RestTemplate 详解
查看>>
HTML5编程之旅 第5站Web Workers
查看>>
oracle 性能优化 02_OWI及性能视图
查看>>
<转>MySQL5.5数据库复制搭建报错之Could not initialize maste...
查看>>
职场老人谈:Linux学习分享
查看>>