
2.5 采用Deep Network Designer实现卷积网络设计
2.5.1 什么是Deep Network Designer
Deep Network Designer是一款基于模块化设计深度网络的应用程序,可以通过拉拽模块来实现深度网络的构建,其具体功能如下。
1)导入预训练网络并对其进行编辑以进行迁移学习。
2)构建新网络。
3)对网络结构进行改进。
4)查看和编辑网络属性。
5)分析、检验所设计网络的正确性、合理性。
6)完成网络设计后,可将其导出到工作区,在命令窗口中训练网络。
2.5.2 如何打开Deep Network Designer
方式1:在MATLAB的命令窗口输入如下代码。

方式2:通过单击相应的App进入,如图2-20所示。

图2-20 通过单击相应的App进入
进入Deep Network Designer的界面,单击“常规”菜单栏的“空白网络”按钮新建网络,新建空白网络页面和各区域的功能如图2-21所示。

图2-21 Deep Network Designer的界面及各区域的功能
2.5.3 需求实例
基于Deep Network Designer构建一个卷积神经网络,可实现对输入的含有0~9数字的二值图像(像素为28×28)进行分类,并计算分类准确率。
部分输入图像如图2-22所示。

图2-22 部分输入图像
2.5.4 在Deep Network Designer中构建卷积神经网络
针对本节2.5.3的需求,所设计的卷积神经网络见表2-5。
表2-5 所设计的卷积神经网络及各部分的参数

在Deep Network Designer中构建表2-5所列的卷积神经网络,步骤如下。
步骤1:如图2-23所示,从模块库中将ImageInputLayer模块拖到操作区当中,单击该模块,在右侧属性显示区中对其进行参数设置,将其设置为输入图像的大小为28×28,1个通道。

图2-23 构建输入层并对其进行参数设置
步骤2:如图2-24所示,从模块库中将Convolution2 DLayer模块拖到操作区当中,单击该模块,在右侧属性显示区中对其进行参数设置,并对其设置:卷积核大小为3×3,卷积核的个数为32(每个卷积核1个通道),卷积的方式为零填充方式(即设定为same方式),其他采用默认的设置。

图2-24 构建卷积层1并对其进行参数设置
步骤3:如图2-25所示,从模块库中将BatchNormalizationLayer拖到操作区当中,单击该模块,在右侧属性显示区中对其进行参数设置,参数采用默认的参数。

图2-25 构建批量归一化层1并对其进行参数设置
步骤4:如图2-26所示,从模块库中将ReLULayer模块拖到操作区当中。

图2-26 构建非线性激活函数层
步骤5:如图2-27所示,从模块库中将MaxPooling2 DLayer模块拖到操作区当中,单击该模块,在右侧属性显示区中对其进行参数设置,并对其设置:池化区域为2×2,步长为1,其他采用默认的设置。

图2-27 构建最大池化层1并对其进行参数设置
步骤6:如图2-28所示,按照步骤2~步骤5的方式构建卷积层2、批量归一化层2、非线性激活函数2、最大池化层2,参数设置按照表2-5所列的参数进行设置。

图2-28 构建卷积层2、批量归一化层2、非线性激活函数2、最大池化层2并对其进行参数设置
步骤7:如图2-29所示,从模块库中将FullyConnectedLayer模块拖到操作区中,单击该模块,在右侧属性显示区中对其进行参数设置,并对其设置:输出的个数为10个,其他采用默认的设置。

图2-29 构建全连接层并对其进行参数设置
步骤8:如图2-30所示,从模块库中将SoftmaxLayer拖到操作区中。

图2-30 构建SoftmaxLayer层
步骤9:如图2-31所示,从模块库中将ClassificationLayer拖到操作区中。

图2-31 构建分类层
步骤10:如图2-32所示,将各层顺序依次连接。

图2-32 将各层顺序依次连接
步骤11:如图2-33所示,单击控制面板上的“分析”按钮,对所设计的网络进行检查,检查结果如图2-34所示。通过检查结果可知,卷积网络设计是正确的。

图2-33 对网络进行检查

图2-34 网络检查结果
步骤12:如图2-35所示,单击“导出”按钮,会将网络导出到工作区(Workspace),并默认名为layer_1。

图2-35 将网络导出到工作区(Workspace)
步骤13:如图2-36所示。在工作区中选中导出的卷积神经网络,通过单击右键对其重命名为covnet1。

图2-36 对导出到工作区的网络进行重命名