主要内容

convolution3dLayer

三维卷积层

描述

3-D卷积层将滑动立方体卷积滤波器应用于3-D输入。该层通过垂直,水平,沿着深度移动滤波器,沿着深度,计算权重和输入的点乘积,然后添加偏置术语来颠覆输入。

创建

描述

= convolution3dLayer (过滤numfilters.的)创建一个三维卷积层,并设置FilterSizeNumFilters属性。

例子

= convolution3dLayer (过滤numfilters.名称,价值的)设置可选稀释物料Numchannels.参数和初始化学习率和正规化,的名字属性使用名称值对。要指定输入填充,请使用“填充”名称值对参数。例如,Convolution3dlayer(11,96,'stride',4,'填充',1)创建一个带有96个尺寸过滤器的3-D卷积层[11 11]一大步(4 - 4)以及沿层输入的所有边缘填充尺寸1的填充。您可以指定多个名称值对。将每个属性名称括在单引号中。

输入参数

全部展开

名称-值对的观点

使用逗号分隔的名称-值对参数指定要沿层输入的边缘添加的填充的大小或设置稀释物料Numchannels.参数和初始化学习率和正规化,的名字属性。将名字用单引号括起来。

例子:Convolution3Dlayer(3,16,'填充','相同')创建一个带有16个尺寸过滤器的3-D卷积层(3 3 3)“相同”填充。在训练时,软件计算并设置填充的大小,使层输出的大小与输入的大小相同。

输入边缘填充,指定为逗号分隔的配对“填充”和其中一个值:

  • “相同”-增加软件在训练或预测时计算的大小填充,使步幅等于1时输出的大小与输入的大小相同。如果步幅大于1,则输出大小是装天花板(inputSize /步),在那里inputSize是输入的高度,宽度或深度步行为相应维度的步幅。如果可能的话,软件会在顶部和底部、左边和右边、前面和后面添加相同数量的填充。如果给定维度中的填充具有奇数值,则软件将额外的填充添加到输入中作为延迟添加。换句话说,该软件在底部增加了额外的垂直填充,在右侧增加了额外的水平填充,在输入的背面增加了额外的深度填充。

  • 非负整数P.- 添加大小的填充P.到输入的所有边缘。

  • 三元素矢量[A B C]非负整数-添加大小填充一种到顶部和底部,填充大小B.到左右,填充大小C输入的前面和后面。

  • 2×3矩阵[t l f;b r k]非负整数-添加大小填充T.到顶部,B.底部,L.到左边,R.向右,F到前面去,然后K.到输入的后面。换句话说,顶行指定预准备,第二行定义三维中的后基。

例子:“填充”,1在输入的顶部和底部添加一行填充,在左边和右边添加一列填充,在输入的前面和后面添加一个填充平面。

例子:'填充','同样'添加填充,使输出与输入具有相同的大小(如果步幅等于1)。

属性

全部展开

卷积

滤波器的高度,宽度和深度,指定为向量[H W D]三个正整数,其中H是高度,W.是宽度,和D.是深度。FilterSize定义神经元在输入中连接的本地区域的大小。

创建图层时,可以指定FilterSize作为标量,用于高度,宽度和深度使用相同的值。

例子:(5 5 5)指定高度、宽度和深度为5的过滤器。

此属性是只读的。

过滤器的数量,指定为正整数。这个数字与卷积层中连接输入区域的神经元数量相对应。这个参数决定了卷积层输出的通道(特征映射)的数量。

数据类型:单身的||INT8.|int16|int32|int64|uint8|uint16|uint32|UINT64

在三维中遍历输入的步长,指定为向量[A B C]三个正整数,其中一种是垂直阶梯大小,B.是水平阶梯大小,和C是沿深度的步长。创建图层时,可以指定作为标量,在所有三个方向上使用相同的步长值。

例子:(1 2 3)指定垂直步长为2,水平步长为3,沿深度方向的步长为1。

扩展卷积的因子(也称为无卷积),指定为矢量[H W D]三个正整数,其中H是垂直扩张,W.是水平膨胀,还是D.是沿着深度的扩张。创建图层时,可以指定稀释物料作为标量,在所有三个方向上使用相同的扩张值。

使用扩张的卷曲来增加层的接收场(该层可以看到的输入区域)而不增加参数或计算的数量。

该层通过在每个过滤器元素之间插入零来扩展过滤器。膨胀因子决定了对输入采样的步长或等效滤波器的上采样因子。它对应的有效过滤器尺寸为(过滤器的大小- 1) *膨胀系数+ 1。例如,一个带有膨胀系数的3 × 3 × 3滤波器(2 2 2)相当于元件之间的零5×5×5滤波器。

例子:(1 2 3)将滤镜垂直放大2倍,水平放大3倍,沿深度放大1倍。

应用于输入边框的填充大小,指定为2 × 3矩阵[t l f;b r k]对于非负整数,其中T.B.是否在垂直方向上应用于顶部和底部的填充,L.R.衬垫是否施加到左侧和水平方向上,FK.衬垫是否沿着深度施加到前后。换句话说,顶行指定预准备,第二行定义三维中的后基。

创建图层时,使用“填充”参数的名称-值对指定填充大小。

例子:[1 2 4; 1 2 4]在输入的顶部和底部添加一行填充,在左边和右边添加两列填充,在输入的前面和后面添加四个填充平面。

确定填充大小的方法,指定为'手动的'或者“相同”

软件会自动设置值paddingMode.基于您在创建图层时指定的“填充”值。

  • 如果你设置了“填充”选项到标量或非负整数的向量,然后自动设置软件paddingMode.'手动的'

  • 如果你设置了“填充”选项“相同”,然后软件自动设置paddingMode.“相同”并在训练时间计算填充的尺寸,使得输出具有与步进等于1的输入相同的尺寸。如果步幅大于1,则输出大小是装天花板(inputSize /步),在那里inputSize是输入的高度,宽度或深度步行为相应维度的步幅。如果可能的话,软件会在顶部和底部、左边和右边、前面和后面添加相同数量的填充。如果给定维度中的填充具有奇数值,则软件将额外的填充添加到输入中作为延迟添加。换句话说,该软件在底部增加了额外的垂直填充,在右侧增加了额外的水平填充,在输入的背面增加了额外的深度填充。

值来填充数据,指定为以下其中之一:

paddingsvalue. 描述 例子
标量 用指定的标量值填充。

[ 3. 1 4. 1 5. 9. 2 6. 5. ] [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3. 1 4. 0. 0. 0. 0. 1 5. 9. 0. 0. 0. 0. 2 6. 5. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ]

“symmetric-include-edge” 使用输入的镜像值(包括边值)填充。

[ 3. 1 4. 1 5. 9. 2 6. 5. ] [ 5. 1 1 5. 9. 9. 5. 1 3. 3. 1 4. 4. 1 1 3. 3. 1 4. 4. 1 5. 1 1 5. 9. 9. 5. 6. 2 2 6. 5. 5. 6. 6. 2 2 6. 5. 5. 6. 5. 1 1 5. 9. 9. 5. ]

'对称排除-Edge' 填充使用镜像值的输入,不包括边缘值。

[ 3. 1 4. 1 5. 9. 2 6. 5. ] [ 5. 6. 2 6. 5. 6. 2 9. 5. 1 5. 9. 5. 1 4. 1 3. 1 4. 1 3. 9. 5. 1 5. 9. 5. 1 5. 6. 2 6. 5. 6. 2 9. 5. 1 5. 9. 5. 1 4. 1 3. 1 4. 1 3. ]

“复制” 使用输入的重复边框元素填充

[ 3. 1 4. 1 5. 9. 2 6. 5. ] [ 3. 3. 3. 1 4. 4. 4. 3. 3. 3. 1 4. 4. 4. 3. 3. 3. 1 4. 4. 4. 1 1 1 5. 9. 9. 9. 2 2 2 6. 5. 5. 5. 2 2 2 6. 5. 5. 5. 2 2 2 6. 5. 5. 5. ]

数据类型:单身的||INT8.|int16|int32|int64|uint8|uint16|uint32|UINT64|字符|字符串

每个过滤器的通道数,指定为'汽车'或者一个正整数。

该参数始终等于对卷积层的输入的通道数。例如,如果输入是彩色图像,则输入的通道数为3.如果在电流层之前的卷积层的滤波器的数量为16,则当前层的通道数为16。

如果Numchannels.'汽车'然后,软件确定培训时间的通道数。

例子:256.

参数和初始化

函数初始化权值,指定为以下其中之一:

  • 'glorot'- 使用Glorot Initializer初始化权重[1](也称为Xavier Initializer)。Glorot Initializer独立地从均匀分布的样本,零均匀和方差2 /(numin + numout),在那里numIn = FilterSize (1) * FilterSize (2) * FilterSize (3) * NumChannelsNUMOUT = FILTERSIZE(1)*过滤(2)*过滤(3)* numfilters

  • “他”- 用初始化程序初始化权重[2].初始化器的样本来自均值和方差为零的正态分布2 / NUMIN.,在那里numIn = FilterSize (1) * FilterSize (2) * FilterSize (3) * NumChannels

  • '窄正常'-从均值为零、标准差为0.01的正态分布中独立抽样来初始化权重。

  • 'zeros'—初始化权值为0。

  • “的”- 用初始化权重。

  • 函数句柄——用自定义函数初始化权重。如果指定函数句柄,则该函数必须是这种形式的权重= func(sz),在那里SZ.是重量的大小。例如,请参见指定自定义权重初始化函数

该层仅初始化权重重量财产是空的。

数据类型:字符|字符串|function_handle.

函数初始化偏差,指定为以下任意一个:

  • 'zeros'-用零初始化偏差。

  • “的”-用1初始化偏差。

  • '窄正常'-从均值为零、标准差为0.01的正态分布中独立抽样来初始化偏差。

  • 函数句柄——用自定义函数初始化偏差。如果指定函数句柄,则该函数必须是这种形式的偏见= func(深圳),在那里SZ.是偏见的大小。

该层仅在偏见财产是空的。

数据类型:字符|字符串|function_handle.

卷积层的层权重,指定为数字数组。

层权重是可学习的参数。您可以直接指定权重的初始值重量层的财产。当您培训网络时,如果重量那个层的财产是非空的Trainnetwork.用来重量属性作为初始值。如果是重量属性是空的,然后Trainnetwork.属性指定的初始化式掌控剂层的财产。

在培训时间,重量是一个FilterSize (1)——- - - - - -FilterSize (2)——- - - - - -FilterSize (3)——- - - - - -Numchannels.——- - - - - -NumFilters大批。

数据类型:单身的|

层偏差为卷积层,指定为数字数组。

层偏差是可学习参数。当您培训网络时,如果偏见非空的,那么Trainnetwork.用来偏见属性作为初始值。如果偏见是空的,然后Trainnetwork.使用指定的初始化程序BiasInitializer

在培训时间,偏见是一个1-by-1-by-1-by——NumFilters大批。

数据类型:单身的|

学习率和正规化

权值的学习率因子,指定为非负标量。

该软件将这个因子乘以全局学习率,以确定这一层权重的学习率。例如,如果举重性活动器2,则该层权重的学习率为当前全局学习率的两倍。该软件根据您使用的设置确定全局学习速率trainingOptions功能。

数据类型:单身的||INT8.|int16|int32|int64|uint8|uint16|uint32|UINT64

偏差的学习率因子,指定为非负标量。

该软件通过全局学习率乘以此因素来确定该层中偏差的学习率。例如,如果Biaslearnratefactor.2,然后层中偏置的学习率是当前全局学习率的两倍。该软件根据您使用的设置确定全局学习速率trainingOptions功能。

数据类型:单身的||INT8.|int16|int32|int64|uint8|uint16|uint32|UINT64

L.2权值的正则化因子,指定为非负标量。

软件将此因素乘以全局L.2确定正则化因素确定L.2正则化这一层的权重。例如,如果WeightL2Factor2,那么L.2这一层权重的正则化是全局权重的两倍L.2正则化因子。您可以指定全局L.2正则化因子trainingOptions功能。

数据类型:单身的||INT8.|int16|int32|int64|uint8|uint16|uint32|UINT64

L.2偏差的正则化因子,指定为非负标量。

软件将此因素乘以全局L.2确定正则化因素确定L.2正则化这一层的偏差。例如,如果biasl2factor.2,那么L.2这层偏差的正则化是全局的两倍L.2正则化因子。您可以指定全局L.2正则化因子trainingOptions功能。

数据类型:单身的||INT8.|int16|int32|int64|uint8|uint16|uint32|UINT64

层名,指定为字符向量或字符串标量。为数组输入,Trainnetwork.assembleNetworklayerGraph,dlnetwork函数自动为层分配名称的名字设置''

数据类型:字符|字符串

此属性是只读的。

层的输入数。这一层只接受单个输入。

数据类型:

此属性是只读的。

输入层名。这一层只接受单个输入。

数据类型:细胞

此属性是只读的。

层输出的数量。这一层只有一个输出。

数据类型:

此属性是只读的。

输出层的名称。这一层只有一个输出。

数据类型:细胞

例子

全部折叠

创建一个带有16个滤镜的3-D卷积层,每个滤镜的高度、宽度和深度分别为5。在所有三个方向上都使用4步。

第= Convolution3dlayer(5,16,'走吧'4)
layer = Convolution3DLayer with properties: Name: " Hyperparameters FilterSize: [5 5 5] NumChannels: 'auto' NumFilters: 16 Stride: [4 4 4] DilationFactor: [1 1 1] PaddingMode: 'manual' PaddingSize: [2x3 double] PaddingValue: 0 Learnable Parameters Weights: [] Bias:[]显示所有属性

包括一个3d卷积层大批。

层= [......image3dinputlayer([28 28 28 3])卷积3dlayer(5,16,'走吧',4)Rubrayer MaxPooling3dlayer(2,'走吧',4)全连接列(10)SoftMaxLayer分类层]
Layer = 7x1 Layer array with layers: 1 " 3-D Image Input 28x28x28x3 images with 'zerocenter' normalization 2 " Convolution 16 5x5x5卷积与stride[4 4 4]和填充[0 0 0;0 0 0] 3“ReLU ReLU 4”3- d Max Pooling 2x2x2 Max Pooling with stride [4 4 4] and padding [0 0 0;0 0 0] 5”全连接10完全连接层6”Softmax Softmax 7”分类输出交叉

要指定权重和偏置初始化器功能,请使用掌控剂BiasInitializer属性分别。要直接指定权重和偏差,请使用重量偏见属性分别。

指定初始化功能

使用32个过滤器创建三维卷积层,每个过滤器具有高度,宽度和深度为5.指定权重初始化程序是HE初始化程序。

filterSize = 5;numFilters = 32;层= convolution3dLayer (filterSize numFilters,......“WeightsInitializer”“他”的)
layer = Convolution3DLayer with properties: Name: " Hyperparameters FilterSize: [5 5 5] NumChannels: 'auto' NumFilters: 32 Stride: [1 1 1] DilationFactor: [1 1 1] PaddingMode: 'manual' PaddingSize: [2x3 double] PaddingValue: 0 Learnable Parameters Weights: [] Bias:[]显示所有属性

请注意重量偏见属性是空的。在训练时,软件使用指定的初始化函数初始化这些属性。

指定自定义初始化函数

要为权重和偏置指定自己的初始化功能,请设置掌控剂BiasInitializer属性设置为函数句柄。对于这些属性,指定将权重和偏差的大小作为输入和输出初始化值的函数句柄。

创建一个带有32个滤镜的卷积层,每个滤镜的高度,宽度和深度都为5。指定初始化器,从标准偏差为0.0001的高斯分布中采样权重和偏差。

filterSize = 5;numFilters = 32;层= convolution3dLayer (filterSize numFilters,......“WeightsInitializer”,@(sz)rand(sz)* 0.0001,......“BiasInitializer”,@(sz)rand(sz)* 0.0001)
layer = Convolution3DLayer with properties: Name: " Hyperparameters FilterSize: [5 5 5] NumChannels: 'auto' NumFilters: 32 Stride: [1 1 1] DilationFactor: [1 1 1] PaddingMode: 'manual' PaddingSize: [2x3 double] PaddingValue: 0 Learnable Parameters Weights: [] Bias:[]显示所有属性

再次,这重量偏见属性是空的。在训练时,软件使用指定的初始化函数初始化这些属性。

直接指定权重和偏差

创建一个与彩色图像兼容的三维卷积层。将权重和偏差设置为W.B.在席位文件中Conv3dWeights.mat分别。

filterSize = 5;numFilters = 32;负载Conv3dweights.层= convolution3dLayer (filterSize numFilters,......'重量'W,......“偏见”, b)
图层=具有属性的卷积3dlayer:''''''''''Quand参数过滤:[5 5 5] NumChannels:3 NumFilters:32步(32步):[1 1]稀释物料:[1 1] PaddingMode:'手动'拼接:[2x3双] PaddingValue:0学习参数权重:[5-D双]偏置:[1x1x1x32双]显示所有属性

在这里,这重量偏见属性包含指定的值。在训练时,如果这些属性是非空的,则软件使用指定的值作为初始权值和偏差。在这种情况下,软件不使用初始化函数。

假设输入的大小是28 × 28 × 28 × 1。创建一个带有16个滤镜的3d卷积层,每个滤镜的高度为6,宽度为4,深度为5。将所有维度的步幅设置为4。

确保卷积完全覆盖输入。为了使卷积完全覆盖输入,输出维数必须是整数。当没有扩张时一世输出维度计算为一世) - 过滤(一世)+填充(一世)) /步(一世)+ 1。

  • 如果水平输出尺寸为整数,则需要两行填充:(28 - 6 + 2)/4 + 1 = 7。通过在图像的顶部和底部添加一行填充对称地分布填充。

  • 如果垂直输出尺寸为整数,则不需要填充:(28 - 4+ 0)/4 + 1 = 7。

  • 对于深度输出尺寸为整数,需要一个填充平面:(28 - 5 + 1)/ 4 + 1 = 7.您必须在图像的前部和背面时不对称地分配填充。该示例将一个平面填充到图像的背面。

构建卷积层。指定“填充”作为一个2 × 3矩阵。在三个维度中,第一行指定预添加,第二行指定延迟添加。

第=卷积3dlayer([6 4 5],16,'走吧'4“填充”,[1 0 0; 1 0 1])
Tillay = Convolution3Dlayer具有属性:名称:''Quand参数过滤:[6 4 5] NumChannels:'Auto'NumFilters:16脚步:[4 4] DilationFactor:[1 1] PaddingMode:'手动'拼接:[2x3双] PaddingValue:0可学习参数权重:[]偏置:[]显示所有属性

更多关于

全部展开

参考文献

[1]格洛洛,泽维尔,还有约书亚·本吉奥。理解训练深度前馈神经网络的困难在第十三国际人工智能与统计会议的诉讼程序,249-356。撒丁岛,意大利:Aistats,2010。

[2]他,Kaiming,湘雅张,少清任,剑孙。“深入研究整流器:超越了在想象中分类上的人力水平表现。”在2015 IEEE计算机视觉国际会议论文集, 1026 - 1034。计算机视觉,2015。

在R2019A引入