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的超类。其属性值如下图所示:
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