深度学习

理解和使用深度学习网络

创建一个简单的DAG网络

创建一个简单的DAG网络

今天我想为大家介绍所需的基本工具构建自己的DAG(有向无环图)网络深度学习。我要建立这个网络和数字数据集训练它。

作为第一步,我将创建的主要分支,它遵循上面显示左边的路径。的layerGraph函数将拯救一群连接步骤;它从一个简单的数组创建一个图的网络层,层连接在一起。

层= [imageInputLayer ([28 28 1],“名字”,“输入”16)convolution2dLayer(5日,“填充”,“相同”,“名字”,“conv_1”)batchNormalizationLayer (“名字”,“BN_1”)reluLayer (“名字”,“relu_1”32岁的)convolution2dLayer (3“填充”,“相同”,“步”2,“名字”,“conv_2”)batchNormalizationLayer (“名字”,“BN_2”)reluLayer (“名字”,“relu_2”32岁的)convolution2dLayer (3“填充”,“相同”,“名字”,“conv_3”)batchNormalizationLayer (“名字”,“BN_3”)reluLayer (“名字”,“relu_3”)additionLayer (2“名字”,“添加”)averagePooling2dLayer (2“步”2,“名字”,“avpool”)fullyConnectedLayer (10“名字”,“俱乐部”)softmaxLayer (“名字”,“softmax”)classificationLayer (“名字”,“classOutput”));

连接层使用layerGraph

lgraph = layerGraph(层)
lgraph = LayerGraph属性:层:[15×1 nnet.cnn.layer.Layer]连接:[14×2表)

情节知道如何可视化DAG网络函数。

情节(lgraph)轴

接下来,我需要创建一个层,将另一个分支。这是一个1×1卷积层。其参数(过滤器和步幅)将匹配的激活大小“relu_3”层。一旦创建了层,addLayers将其添加到lgraph

32岁的skip_conv_layer = convolution2dLayer (1“步”2,“名字”,“skipConv”);lgraph = addLayers (lgraph skip_conv_layer);情节(lgraph)轴

你可以看到新图层,但它看起来有点孤独了。我需要连接到其他层使用connectLayers

lgraph = connectLayers (lgraph,“relu_1”,“skipConv”);lgraph = connectLayers (lgraph,“skipConv”,“添加/ in2”);情节(lgraph);轴

现在,我已经构建了网络,这是训练的步骤使用我们的数字数据集。

[trainImages, trainLabels] = digitTrain4DArrayData;[valImages, valLabels] = digitTest4DArrayData;

指定培训方案和培训网络。

选择= trainingOptions (“个”,“MaxEpochs”6“洗牌”,“every-epoch”,“ValidationData”{valImages, valLabels},“ValidationFrequency”,20岁,“VerboseFrequency”,20);网= trainNetwork (trainImages trainLabels、lgraph选项)
培训单一的GPU。初始化图像正常化。| = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | | | |时代迭代时间| Mini-batch | |验证Mini-batch | |验证基地学习| | | |(秒)| | | | |精度损失精度损失速率| | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | | 1 | 1 | 0.03 | 2.3317 | 2.2729 | | 11.72% 14.38% | 0.0100 | | 1 | 20 | 0.81 | 0.9775 | 0.9119 | | 71.88% 72.24% | 0.0100 | | 2 | 40 | 1.61 | 0.3783 | 0.4352 | | 92.19% 88.86% | 0.0100 | | 2 | 60 | 2.38 | 0.3752 | 0.3111 | | 89.06% 92.06% | 0.0100 | | 3 | 80 | 3.21 | 0.1935 | 0.1945 | | 96.88% 96.18% | 0.0100 | | 3 | 100 | 4.04 | 0.1777 | 0.1454 | | 97.66% 97.32% | 0.0100 | | 120 | | 4.89 | 0.0662 | 0.0956 | | 100.00% 98.50% | 0.0100 | | 140 | | 5.77 | 0.0764 | 0.0694 | | 99.22% 99.30% | 0.0100 | | 160 | | 6.58 | 0.0466 | 0.0540 | | 100.00% 99.52% | 0.0100 | | 180 | | 7.36 | 0.0459 | 0.0459 | | 99.22% 99.60% | 0.0100 | | 6 | 200 | 8.12 | 0.0276 | 0.0390 | | 100.00% 99.56% | 0.0100 | | 6 | 220 | 9.01 | 0.0242 | 0.0354 | | 100.00% 99.62% | 0.0100 | | 6 | 234 | 9.84 | 0.0160 | | 100.00% | | 0.0100 | | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = |网= DAGNetwork属性:层:[16×1 nnet.cnn.layer.Layer]连接:[16×2表)

的输出trainNetwork是一个DAGNetwork对象。的连接财产记录单个层是如何连接到对方。

net.Connections
ans = 16×2表源目的地__________ _________________“输入”“conv_1”‘conv_1’‘BN_1’‘BN_1’‘relu_1’‘relu_1’‘conv_2’‘relu_1’‘skipConv’‘conv_2’‘BN_2’‘BN_2’‘relu_2’‘relu_2’‘conv_3’‘conv_3’‘BN_3’‘BN_3’‘relu_3 relu_3的“添加/三机一体”“添加”“avpool”“avpool”“俱乐部”“俱乐部”“softmax”“softmax”“classOutput”“skipConv”“添加/ in2”

分类验证图像和计算精度。

predictedLabels =分类(净,valImages);精度=意味着(predictedLabels = = valLabels)
精度= 0.9974

这些都是基础。创建层使用不同层函数,加入他们的使用layerGraphconnectLayers。然后你可以训练,以同样的方式使用网络你将训练和使用其他网络。

参考:创建和火车DAG网络深度学习




发表与MATLAB®R2017b

|
  • 打印
  • 发送电子邮件

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。