列车网络形象和特征数据
这个例子展示了如何训练网络,把手写的数字输入数据使用图像和特征。
负荷训练数据
加载数字图片,标签,顺时针旋转角度。
[X1Train, TTrain X2Train] = digitTrain4DArrayData;
训练一个网络与多个输入使用trainNetwork
函数创建一个数据存储包含训练预测和响应。使用数值数组转换为数据存储arrayDatastore
。然后,使用结合
函数将它们组合成一个单一的数据存储。
dsX1Train = arrayDatastore (X1Train IterationDimension = 4);dsX2Train = arrayDatastore (X2Train);dsTTrain = arrayDatastore (TTrain);dsTrain =结合(dsX1Train dsX2Train dsTTrain);
显示20个随机训练图像。
numObservationsTrain =元素个数(TTrain);idx = randperm (numObservationsTrain 20);图tiledlayout (“流”);为i = 1:元素个数(idx) nexttile imshow (X1Train (:,:,:, idx(我)))标题(角:“+ X2Train (idx(我)))结束
定义网络体系结构
定义以下网络。
对于图像输入,指定一个图像输入层与大小匹配的输入数据。
输入的特性,指定一个功能的输入层与大小匹配输入的数量特征。
图像输入分支,指定一个卷积,批正常化,和ReLU层块,卷积层16 5-by-5过滤器。
将批处理的输出归一化层一个特征向量,包括一个完全连接层大小50。
先连接的输出输入完全连接层的特性,压平
“SSCB”
(空间、空间、通道、批处理)完全连接层,这样的输出格式“CB”
使用一个平层。连接的平层功能的输出输入的第一个维度(通道尺寸)。
对于分类输出,包括一个完全连接层与输出尺寸匹配的类的数量,其次是softmax和分类输出层。
创建一个层数组包含网络的主干和把它转换成一层图。
[h, w, numChannels numObservations] =大小(X1Train);numFeatures = 1;numClasses =元素个数(类别(TTrain));imageInputSize = [w h numChannels];filterSize = 5;numFilters = 16;层= [imageInputLayer (imageInputSize正常化=“没有”)convolution2dLayer (filterSize numFilters) batchNormalizationLayer reluLayer fullyConnectedLayer (50) flattenLayer concatenationLayer(1、2名=“猫”)fullyConnectedLayer (numClasses) softmaxLayer classificationLayer];lgraph = layerGraph(层);
添加一个功能的输入层到层图并将其连接到第二个输入的连接层。
featInput = featureInputLayer (numFeatures Name =“特征”);lgraph = addLayers (lgraph featInput);lgraph = connectLayers (lgraph,“特征”,“猫/ in2”);
可视化网络在一个阴谋。
图绘制(lgraph)
指定培训选项
指定培训选项。
火车用个优化器。
火车15时代。
培训学习速率为0.01。
显示在一块训练进展。
抑制详细的输出。
选择= trainingOptions (“个”,…MaxEpochs = 15,…InitialLearnRate = 0.01,…情节=“训练进步”,…Verbose = 0);
列车网络的
列车网络使用trainNetwork
函数。
网= trainNetwork (dsTrain、lgraph选项);
测试网络
测试网络的分类精度通过比较测试集上的预测与真正的标签。
负载测试数据和创建一个包含图片和数据存储功能相结合。
[X1Test, tt, X2Test] = digitTest4DArrayData;dsX1Test = arrayDatastore (X1Test IterationDimension = 4);dsX2Test = arrayDatastore (X2Test);dst =结合(dsX1Test dsX2Test);
分类测试数据使用分类
函数。
欧美=分类(净,dst);
图表可视化预测在一个混乱。
次图confusionchart (tt)
评估分类精度。
精度=意味着(欧美= = tt)
精度= 0.9834
视图的一些图片和他们的预测。
idx = randperm(大小(X1Test, 4), 9);图tiledlayout (3,3)为我= = 1:9 nexttile X1Test (:,:,:, idx(我));imshow(我)标签=字符串(欧美(idx (I)));标题(“预测标签:“+标签)结束
另请参阅
dlnetwork
|dlfeval
|dlarray
|fullyConnectedLayer
|深层网络设计师|featureInputLayer
|minibatchqueue
|onehotencode
|onehotdecode