主要内容

resnetLayers

创建二维剩余网络

自从R2021b

    描述

    例子

    lgraph= resnetLayers (inputSize,numClasses)创建一个二维剩余的网络图像输入指定的大小inputSize和一些指定的类numClasses。剩余网络由成堆的街区。每个块包含深度学习层。网络层包括一个图像分类,适用于预测输入图像的分类标签。

    创建一个三维残余网络使用resnet3dLayers

    例子

    lgraph= resnetLayers (___,名称=值)使用一个或多个名称参数创建一个残余网络使用任何输入参数在前面的语法。例如,InitialNumFilters = 32在最初的卷积层指定32过滤器。

    例子

    全部折叠

    创建一个残余网络瓶颈的架构。

    图象尺寸= (224 224 3);numClasses = 10;numClasses lgraph = resnetLayers(图象尺寸)
    lgraph = LayerGraph属性:InputNames:{“输入”}OutputNames:{“输出”}层:x1 nnet.cnn.layer.Layer[177]连接:[192 x2表)

    分析了网络。

    analyzeNetwork (lgraph)

    这个网络相当于ResNet-50残余网络。

    使用自定义创建一个resnet - 101网络堆栈深度。

    图象尺寸= (224 224 3);numClasses = 10;stackDepth = [3 4 23 3];numFilters = (64 128 256 512);numClasses lgraph = resnetLayers(图象尺寸,StackDepth = StackDepth,NumFilters = NumFilters)
    lgraph = LayerGraph属性:InputNames:{“输入”}OutputNames:{“输出”}层:x1 nnet.cnn.layer.Layer[347]连接:[379 x2表)

    分析了网络。

    analyzeNetwork (lgraph)

    创建和火车残余网络对图像进行分类。

    数字数据加载内存数值数组使用digitTrain4DArrayDatadigitTest4DArrayData功能。

    [XTrain, YTrain] = digitTrain4DArrayData;[XTest,欧美]= digitTest4DArrayData;

    定义残余网络。数字数据包含28-by-28像素图像,因此,构建一个较小的残余网络过滤器。

    图象尺寸= [28 28 1];numClasses = 10;numClasses lgraph = resnetLayers(图象尺寸,InitialStride = 1,InitialFilterSize = 3,InitialNumFilters = 16,StackDepth = [4 3 2],NumFilters = [16 32 64]);

    将选项设置为默认设置随机梯度下降的势头。时代的最大数量为5,开始培训一个初始的学习速率为0.1。

    选择= trainingOptions (“个”,MaxEpochs = 5,InitialLearnRate = 0.1,Verbose = false,情节=“训练进步”);

    培训网络。

    网= trainNetwork (XTrain YTrain、lgraph选项);

    测试网络的性能评估测试数据的预测精度。使用分类每个测试函数来预测类标签的图片。

    YPred =分类(净,XTest);

    计算的准确性。标签的准确性是分数网络预测正确。

    精度= (YPred = =次)/元素个数之和(欧美)
    精度= 0.9956

    训练一个残余网络使用自定义训练循环,首先将它转换成一个dlnetwork对象。

    创建一个残余网络。

    lgraph = resnetLayers ((224 224), 5);

    删除分类层。

    lgraph = removeLayers (lgraph,“输出”);

    用一个新的替换输入层,输入层归一化设置为“没有”。使用一个输入层与中心零位或z分数归一化,您必须指定一个imageInputLayer非空的值的意思是财产。例如,意味着=总和(XTrain, 4),在那里XTrain是一个四维数组包含输入数据。

    newInputLayer = imageInputLayer(224 224 3,标准化=“没有”);lgraph = replaceLayer (lgraph,“输入”,newInputLayer);

    转换为一个dlnetwork

    dlnet = dlnetwork (lgraph)
    dlnet = dlnetwork属性:层:x1 nnet.cnn.layer.Layer[176]连接:[191 x2表]可学的:[214 x3表]状态:[106 x3表]InputNames: {“imageinput”} OutputNames: {“softmax”}初始化:1观点总结总结。

    输入参数

    全部折叠

    网络输入图像大小,指定为以下之一:

    • 2-element向量形式(高度,宽度]。

    • 转换向量形式(高度,宽度,深度),深度通道的数量。集深度3并为RGB图像1为灰度图像。多光谱和高光谱图像集深度通道的数量。

    高度宽度值必须大于或等于initialStride * poolingStride * 2D,在那里D是将采样块的数量。设置初始步使用InitialStride论点。池的跨越1InitialPoolingLayer被设置为“没有”,2否则。

    数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

    图像分类的类网络,指定为一个比1大的整数。

    数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

    名称-值参数

    指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

    例子:InitialFilterSize = [5,5], InitialNumFilters = 32, BottleneckType =“没有”指定一个初始过滤5-by-5像素大小,32初始过滤,和没有瓶颈的网络体系结构组件。

    初始层

    全部折叠

    过滤器尺寸在第一个卷积层,指定为以下之一:

    • 正整数。过滤器有同样的高度和宽度。例如,指定5产量一个过滤器的高度和宽度5。

    • 2-element向量形式(高度,宽度]。例如,指定一个初始过滤的大小(1 - 5)收益率高度1和宽度5的一个过滤器。

    例子:InitialFilterSize = (5, 5)

    数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

    第一卷积的过滤层,指定为一个正整数。初始过滤的数量决定了渠道的数量(特征图谱)的输出第一卷积层残余网络。

    例子:InitialNumFilters = 32

    数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

    大步的卷积层,指定为:

    • 正整数。步有同样的高度和宽度。例如,指定3收益率高度和宽度3步。

    • 2-element向量形式(高度,宽度]。例如,指定一个初始的步伐(1 2)收益率高度宽度1和2的步伐。

    步定义的步长遍历输入垂直和水平。

    例子:InitialStride = (3、3)

    数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

    第一个池层初始残余块之前,指定为以下之一:

    • “马克斯”——使用max池层之前最初的残块。有关更多信息,请参见maxPooling2dLayer

    • “平均”——使用平均池层之前最初的残块。有关更多信息,请参见averagePooling2dLayer

    • “没有”——不使用池层之前最初的残块。

    例子:InitialPoolingLayer =“平均”

    数据类型:字符|字符串

    网络体系结构

    全部折叠

    剩余块类型,指定为以下之一:

    • “batchnorm-before-add”——添加批量标准化层之前添加层残块[1]

    • “batchnorm-after-add”——添加批量标准化层添加图层后残块[2]

    ResidualBlockType参数指定批处理的位置归一化层标准和downsampling残块。有关更多信息,请参见更多关于

    例子:ResidualBlockType = " batchnorm-after-add "

    数据类型:字符|字符串

    块瓶颈类型,指定为以下之一:

    • “downsample-first-conv”——使用瓶颈残块执行将采样的卷积层将采样的残块,使用2的步伐。瓶颈残块包含三个卷积层:将采样通道尺寸1×1层,3 x3的卷积层和一层1×1 upsampling通道尺寸。

      过滤器的数量在最后卷积层是四倍,在前两个卷积层。有关更多信息,请参见NumFilters

    • “没有”——不使用瓶颈残块。剩余3×3的卷积模块由两层。

    瓶颈块执行1×1 3×3的卷积,卷积之前减少渠道的四个因素之一。网络有或没有瓶颈块会有类似水平的计算复杂度,但传播特性的总数在剩余连接四倍使用瓶颈时单位。因此,使用一个瓶颈增加网络的效率[1]。更多信息在每个层残块,明白了更多关于

    例子:BottleneckType = "没有"

    数据类型:字符|字符串

    每个栈的残块,指定为一个向量的正整数。例如,如果堆栈深度(3 4 6 3)网络有四个栈,三块,四块,六块,三块。

    指定的过滤器的卷积层堆栈使用NumFilters论点。的StackDepth值必须有相同数量的元素NumFilters价值。

    例子:StackDepth = (9 69 9)

    数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

    数量的每个堆栈滤波器的卷积层,指定为一个向量的正整数。

    • 当您设置BottleneckType“downsample-first-conv”在每个块,前两个卷积层每个堆栈有相同数量的过滤器,设定的NumFilters价值。最后卷积层有四倍的过滤器在第一两个卷积层。

      例如,假设您设置NumFilters5 [4]BottleneckType“downsample-first-conv”。在第一个堆栈,前两个卷积层每一块有4个过滤器和每一块的最后卷积层有16个过滤器。在第二个堆栈,前两个卷积层每一块有5过滤器、过滤最后卷积有20层。

    • 当您设置BottleneckType“没有”,每个堆栈中的卷积层具有相同数量的过滤器,设定的NumFilters价值。

    NumFilters值必须有相同数量的元素StackDepth价值。

    NumFilters价值决定了层残连接在最初的残块。有一个卷积层剩余连接如果满足下列条件之一:

    • BottleneckType = " downsample-first-conv "(默认),InitialNumFilters不等于四倍的第一个元素NumFilters

    • BottleneckType = "没有"InitialNumFilters不等于第一个元素的NumFilters

    更多信息关于每一层的残块,明白了更多关于

    例子:NumFilters = (32 64 126 256)

    数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

    数据规范化应用每次通过输入层数据forward-propagated,指定为以下之一:

    • “zerocenter”——减去均值。在训练时间平均计算。

    • “zscore”——减去均值和除以标准差。平均值和标准偏差计算训练时间。

    例子:归一化= " zscore "

    数据类型:字符|字符串

    输出参数

    全部折叠

    剩余的网络,作为一个返回layerGraph对象。

    更多关于

    全部折叠

    剩余的网络

    剩余网络(ResNets)是一种深层网络组成的构建块剩余的连接(也称为跳过快捷方式连接)。这些连接允许跳过卷积的输入单元的主要分支,从而提供一个更简单的路径通过网络。通过允许参数梯度流更容易从输出层到层网络的早些时候,剩余连接帮助缓和梯度消失在早期训练的问题。

    剩余的结构网络是灵活的。剩余的关键组件是包含关系剩余块。一群被称为残块堆栈。ResNet架构由初始层,其次是堆栈包含残块,然后最后一层。网络有三个类型的残块:

    • 初始残余块——这个块发生在第一个堆栈的开始。剩余的层连接的初始残余块确定块保存激活大小或执行将采样。

    • 标准残差块——这在每个堆栈块发生多次,第一次将采样后残块。标准的残块保存激活大小。

    • Downsampling残块——这个块发生一次,每个堆栈的开始。第一个回旋的单位将采样块downsamples空间维度的两倍。

    一个典型的堆栈downsampling残块,紧随其后标准残块,大于或等于1。第一个堆栈是唯一的堆栈,始于最初的残块。

    图显示N栈串联连接。

    最初的标准,将采样残块瓶颈或nonbottleneck块。瓶颈块执行1×1 3×3的卷积,卷积之前减少渠道的数量的四倍。网络有或没有瓶颈街区有类似水平的计算复杂度,但传播特性的总数在剩余连接四倍当你使用瓶颈单元。因此,使用瓶颈块增加网络的效率。

    层内每一块都是由块的类型和设置的选项。

    屏蔽层

    的名字 初始层 初始残余块 标准残差块(BottleneckType = " downsample-first-conv ") 标准残差块(BottleneckType = "没有") 将采样剩余块 最后一层
    描述

    剩余网络始于以下层,为了:

    设置可选池层使用InitialPoolingLayer论点。

    的主要分支初始残块具有相同的层作为标准残块。

    InitialNumFiltersNumFilters值确定层剩余连接。剩余的连接有一个回旋的层[1]过滤和[1]如果满足下列条件之一:

    • BottleneckType = " downsample-first-conv "(默认),InitialNumFilters不等于四倍的第一个元素NumFilters

    • BottleneckType = "没有"InitialNumFilters不等于第一个元素的NumFilters

    如果ResidualBlockType被设置为“batchnorm-before-add”,剩余的连接也将一批标准化层。

    标准的残块与瓶颈单位有以下层,为了:

    标准块已经从先前的输出剩余连接块添加层。

    设置的位置添加层使用ResidualBlockType论点。

    标准残差块没有瓶颈单元具有以下层,为了:

    标准块已经从先前的输出剩余连接块添加层。

    设置的位置添加层使用ResidualBlockType论点。

    downsampling残块是一样的标准块(有或没有瓶颈)但的步伐(2,2)在第一个卷积层和附加层残余连接。

    剩余的层依赖于连接ResidualBlockType价值。

    将采样块部分输入的高度和宽度,并增加渠道的数量。

    剩余网络以以下层,为了:

    可视化例子

    初始层残余网络。

    的初始残余块没有瓶颈和批处理的网络标准化层之前添加层。

    最初的残块的残的例子网络。

    标准残块的例子网络瓶颈和批处理标准化层之前添加层。

    例子,一个标准的残块的残余网络瓶颈单元。

    标准残块的例子一批网络没有瓶颈和归一化层之前添加层。

    例子,一个标准的残块在一个没有瓶颈的残余网络单元。

    例子downsampling残块的网络没有瓶颈和批处理标准化层之前添加层。

    的例子将采样剩余块在一个没有瓶颈的残余网络单元。

    最后一层的残余网络。

    卷积和完全连接层权值初始化使用他体重初始化方法[3]。有关更多信息,请参见convolution2dLayer

    提示

    • 在处理小图片,设置InitialPoolingLayer选项“没有”删除初始池层和减少将采样的数量。

    • 剩余网络通常叫ResNet -X,在那里X深度的网络。的深度网络被定义为最多的连续卷积或完全连接层路径从输入层到输出层。您可以使用以下公式计算网络的深度:

      深度= { 1 + 2 = 1 N 年代 + 1 如果没有瓶颈 1 + 3 = 1 N 年代 + 1 如果瓶颈 ,

      在哪里年代堆栈的深度吗

      网络具有相同的深度可以有不同的网络架构。例如,您可以创建一个ResNet-14架构有或没有一个瓶颈:

      resnet14Bottleneck = resnetLayers ([224 224 3] 10StackDepth = (2 - 2),NumFilters = [64 - 128]);resnet14NoBottleneck = resnetLayers ([224 224 3] 10BottleneckType =“没有”,StackDepth = (2 2 2),NumFilters = (64 128 256));
      瓶颈和nonbottleneck架构之间的关系也意味着网络瓶颈将有不同的深度比网络没有一个瓶颈。
      resnet50Bottleneck = resnetLayers ((224 224), 10);resnet34NoBottleneck = resnetLayers ([224 224 3] 10BottleneckType =“没有”);

    引用

    [1]他开明、象屿张任Shaoqing,剑太阳。“深层残留图像识别的学习。“预印本,2015年12月10日提交。https://arxiv.org/abs/1512.03385。

    [2]他开明、象屿张任Shaoqing,剑太阳。“身份映射在深残余网络。“预印本,提交2016年7月25日。https://arxiv.org/abs/1603.05027。

    [3]他开明、象屿张任Shaoqing,剑太阳。“深深入整流器:超越人类表现ImageNet分类。”In学报2015年IEEE计算机视觉国际会议,1026 - 1034。华盛顿特区:IEEE计算机视觉的社会,2015年。

    扩展功能

    版本历史

    介绍了R2021b