主要内容

列车网络形象和特征数据

这个例子展示了如何训练网络,把手写的数字输入数据使用图像和特征。

负荷训练数据

加载数字图片,标签,顺时针旋转角度。

[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)));标题(“预测标签:“+标签)结束

另请参阅

||||||||

相关的例子

更多关于