主要内容

Convolution3dlayer.

三维卷积层

描述

三维卷积层将滑动立方卷积滤波器应用于三维输入。该层通过沿输入垂直、水平和深度移动滤波器,计算权重和输入的点积,然后添加偏差项,对输入进行卷积。

创建

描述

= convolution3dLayer(过滤numfilters.创建了一个3-d卷积层,并设置FilterSizeNumFilters属性。

例子

= convolution3dLayer(过滤numfilters.名称,价值设置可选DilationFactorNumChannels.参数和初始化学习速度和正规化, 和的名字使用名称-值对的属性。要指定输入填充,使用“填充”名称-值对的论点。例如,convolution3dLayer(11, 96,“大步”4“填充”,1)创建一个带有96个滤镜大小的3d卷积层[11 11],一步(4 - 4)以及沿层输入的所有边缘填充尺寸1的填充。您可以指定多个名称值对。用单引号括起每个属性名称。

输入参数

全部展开

名称值对参数

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

例子:Convolution3Dlayer(3,16,'填充','相同')创建一个带有16个滤镜的3d卷积层(3 3 3)'相同的'填充。在训练时间,该软件计算并设置的填充,使得该层输出的大小与输入相同的大小。

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

  • '相同的'- 在训练或预测时添加软件计算的大小的填充,使得输出在步幅等于1时具有与输入相同的尺寸。如果步幅大于1,则输出大小是CEIL(投入/迈出),在那里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的深度。

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

例子:96

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

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

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

使用扩展卷积来增加层的接受域(层可以看到的输入区域),而不增加参数或计算的数量。

所述层通过每个过滤器元件之间插入零膨胀的过滤器。扩张因子确定用于采样输入或等效滤波器的升频采样因数的步长大小。它对应于一个有效的滤波器尺寸(过滤尺寸- 1) *扩张因子+ 1。例如,一个带有膨胀系数的3 × 3 × 3滤波器[2 2 2]相当于5×5×5的滤波器,其中元件之间的零。

例子:[2 3 1]通过因子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,则输出大小是CEIL(投入/迈出),在那里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. ]

“symmetric-exclude-edge” 使用镜像输入值(不包括边值)的Pad。

[ 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. ]

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

这个参数总是等于卷积层的输入信道数。例如,如果输入是彩色图像,则输入的通道数为3。如果当前层之前卷积层的滤波器数为16,则当前层的通道数为16。

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

例子:256

参数和初始化

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

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

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

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

  • 'zeros'- 初始化用零的权重。

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

  • 功能手柄 - 一个自定义函数初始化的权重。如果指定一个函数句柄,那么函数必须是形式权重= func(sz),在那里深圳是重量的大小。例如,请参见指定自定义权重初始化函数

属性时,层才初始化权重重量财产是空的。

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

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

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

  • “的”- 初始化者的偏见。

  • “narrow-normal”-从均值为零、标准差为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大批。

数据类型:|

学习速度和正规化

学习速率因子的权重,指定为非标。

该软件将这个因子乘以全局学习率,以确定这一层权重的学习率。例如,如果WeightLearnRateFactor为2,则对于在该层的权重学习速率是当前全球学习速率的两倍。该软件基于与指定的设置全局学习速率trainingOptions功能。

例子:2

学习率因素的偏见,指定为非标。

软件将这个因子乘以全局学习率,以确定这一层偏差的学习率。例如,如果Biaslearnratefactor.为2,则对于在该层中的偏差学习速率是当前全球学习速率的两倍。该软件基于与指定的设置全局学习速率trainingOptions功能。

例子:2

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

软件将此因子乘以全局L2正则化因子来确定该层中重量的L2正则化。例如,如果WeightL2Factor为2,则该层权值的L2正则化是全局L2正则化因子的两倍。您可以使用使用的全局L2正则化因子指定trainingOptions功能。

例子:2

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

该软件将此因子乘以全局L2正则化因子来确定该层中偏差的L2正则化。例如,如果biasl2factor.是2,那么该层中偏差的L2正则化是全局L2正则化因子的两倍。您可以使用使用的全局L2正则化因子指定trainingOptions功能。

例子:2

层名,指定为字符向量或字符串标量。若要在层图中包含层,必须指定非空的唯一层名。如果你用层和的名字被设置为'',那么软件的名称自动分配到训练时间的层。

数据类型:字符|字符串

层的输入数。此图层仅接受单个输入。

数据类型:

该层的输入名称。此图层仅接受单个输入。

数据类型:细胞

层的输出数目。此图层仅具有单个输出。

数据类型:

图层的输出名称。此图层仅具有单个输出。

数据类型:细胞

例子

全部收缩

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

16层= convolution3dLayer(5日,'走吧'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:[]显示所有属性

包含一个3-D卷积层大批。

层= [...image3dInputLayer([28 28 28 3])'走吧',4)Rublayer MaxPooling3dlayer(2,'走吧',4) softmaxLayer (10) softmaxLayer classificationLayer
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个滤镜的3d卷积层,每个滤镜的高度、宽度和深度都为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参数过滤:NumChannels:3 NumFilters:32步(32步):[1 1]膨胀率:[1 1] PaddingMode:'手动'拼接:[2x3双] PaddingValue:0学习参数权重:[5-D双]偏置:[1x1x1x32双]显示所有属性

在这里,这是重量偏见属性包含指定值。在训练的时候,如果这些属性都是非空的,那么软件将使用指定的值作为初始重量和偏见。在这种情况下,该软件不使用初始化功能。

假设输入的大小为28的分28按28×1。为6的高度,4的宽度,和5.将步幅在所有维度〜4的深度创建具有16个滤波器,每个3-d卷积层。

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

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

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

  • 如果深度输出尺寸为整数,则需要一个填充平面:(28 - 5 + 1)/4 + 1 = 7。你必须在图像的正面和背面不对称地分布填充。这个例子在图像的后面添加了一个填充平面。

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

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

更多关于

全部展开

参考文献

[1]格洛洛,泽维尔,还有约书亚·本吉奥。理解训练深度前馈神经网络的困难在第十三届国际人工智能和统计会议论文集,249-356。撒丁岛,意大利:2010年亚斯特哈。

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

在R2019A介绍