主要内容

convolution3dLayer

3-D卷积层

描述

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

创建

描述

= convolution3dLayer (filterSizenumFilters创建一个三维卷积层,并设置FilterSizeNumFilters属性。

例子

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

输入参数

展开全部

名称-值对的观点

使用逗号分隔的name-value对参数指定填充的大小,以沿着图层的边缘添加或设置步行DilationFactorNumChannels参数和初始化学习率和正规化,的名字属性。用单引号附上名称。

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

输入边填充,指定为逗号分隔对,由'填充'其中一个价值观是:

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

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

  • 三元素向量(a b c)非负整数-添加大小填充一个到顶部和底部,填充大小b左右,大小的填充c到输入的前后。

  • 2×3矩阵[t l f; b r k]非负整数-添加大小填充t前,b至底部,l到左边,r向右,f到前面去,然后k到输入的后面。换句话说,第一行指定了预添加,第二行定义了三个维度中的延迟添加。

例子:'填充',1将一排填充到顶部和底部,一列填充到左右,并向输入的前后填充平面。

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

特性

展开全部

卷积

过滤器的高度、宽度和深度,指定为矢量[w h 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的步长。

扩展卷积的因子(也称为无卷积),指定为矢量[w h d]三个正整数,其中h为垂直膨胀,w是水平扩张,和d是沿深度的膨胀。在创建图层时,可以指定DilationFactor作为标量,在所有三个方向上使用相同的膨胀值。

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

该层通过在每个过滤器元素之间插入零来扩展过滤器。膨胀因子决定了对输入采样的步长或等效滤波器的上采样因子。它对应的有效过滤器尺寸为(过滤器的大小- 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]对于非负整数,其中tb是否在垂直方向上应用于顶部和底部的填充,lr在水平方向上,填充是否应用于左边和右边fk是否沿深度将填充物应用到前面和后面。换句话说,第一行指定了预添加,第二行定义了三个维度中的延迟添加。

当你创建一个图层时,使用'填充'名称值对参数指定填充大小。

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

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

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

  • 如果你设置'填充'选项为标量或非负整数向量,则软件自动设置PaddingMode“手动”

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

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

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

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

数据类型:|双倍的|int8|int16|INT32.|INT64.|uint8.|uint16|UINT32.|uint64|char|细绳

每个滤波器的通道数,指定为“汽车”或正整数。

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

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

例子:256

参数和初始化

初始化权重的功能,指定为以下之一:

  • “glorot”-使用gloria初始化器初始化权重[1](也称为Xavier初始化器)。格洛特初始化器从均值和方差均为零的均匀分布中独立抽样2 / (numIn + numOut), 在哪里numIn = FilterSize (1) * FilterSize (2) * FilterSize (3) * NumChannelsnumOut = FilterSize (1) * FilterSize (2) * FilterSize (3) * NumFilters

  • “他”-使用He初始化器初始化权值[2].他初始化来自正常分布的样本,零均值和方差2 / numIn, 在哪里numIn = FilterSize (1) * FilterSize (2) * FilterSize (3) * NumChannels

  • “narrow-normal”- 通过独立从正常分布采样,零平均值和标准偏差0.01,通过自主分布初始化权重。

  • “零”—初始化权值为0。

  • “的”—使用“1”初始化权重。

  • 函数句柄——用自定义函数初始化权重。如果指定函数句柄,则该函数必须是这种形式的重量= func(深圳), 在哪里深圳是重量的大小。例如,看到指定自定义权重初始化函数

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

数据类型:char|细绳|function_handle

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

  • “零”- 用零初始化偏差。

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

  • “narrow-normal”- 通过从正常分布的独立采样,零平均值和标准偏差0.01来初始化偏置。

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

该层仅在偏见属性是空的。

数据类型:char|细绳|function_handle

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

层权值是可学习的参数。属性可以直接指定权重的初始值权重属性的层。当你训练一个网络,如果权重属性为非空,则trainNetwork使用权重属性作为初始值。如果权重属性为空trainNetwork属性指定的初始化式WeightsInitializer属性的层。

在培训时,权重是A.过滤(1)-经过-FilterSize (2)-经过-FilterSize (3)-经过-NumChannels-经过-NumFilters数组中。

数据类型:|双倍的

卷积层的层偏置,指定为数字阵列。

层偏差是可学习的参数。当你训练一个网络,如果偏见非空的,那么trainNetwork使用偏见属性作为初始值。如果偏见是空的,然后trainNetwork使用指定的初始化式BiasInitializer

在培训时,偏见是一个1-1×1的 -NumFilters数组中。

数据类型:|双倍的

学习率和正规化

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

该软件通过全局学习率乘以此因素来确定该层中权重的学习率。例如,如果WeightLearnRateFactor2,则该层权重的学习率为当前全局学习率的两倍。该软件根据您指定的设置来确定全局学习率trainingOptions函数。

数据类型:|双倍的|int8|int16|INT32.|INT64.|uint8.|uint16|UINT32.|uint64

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

软件将这个因子乘以全局学习率,以确定这一层偏差的学习率。例如,如果BiasLearnRateFactor2,则该层偏差的学习率是当前全局学习率的两倍。该软件根据您指定的设置来确定全局学习率trainingOptions函数。

数据类型:|双倍的|int8|int16|INT32.|INT64.|uint8.|uint16|UINT32.|uint64

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

软件将这个因素乘以全球l2正则化因子的确定l2对该层中的重量进行正则化。例如,如果WeightL2Factor2,那么l2此图层中重量的正则化是全局的两倍l2正则化因素。您可以指定全局l2正则化因子trainingOptions函数。

数据类型:|双倍的|int8|int16|INT32.|INT64.|uint8.|uint16|UINT32.|uint64

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

软件将这个因素乘以全球l2正则化因子的确定l2对于该层的偏差进行正常化。例如,如果BiasL2Factor2,那么l2这一层偏见的正规化程度是全球的两倍l2正则化因素。您可以指定全局l2正则化因子trainingOptions函数。

数据类型:|双倍的|int8|int16|INT32.|INT64.|uint8.|uint16|UINT32.|uint64

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

数据类型:char|细绳

此属性是只读的。

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

数据类型:双倍的

此属性是只读的。

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

数据类型:细胞

此属性是只读的。

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

数据类型:双倍的

此属性是只读的。

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

数据类型:细胞

例子

全部折叠

创建一个带16个过滤器的3-D卷积层,每个滤波器高,宽度和深度为5.在所有三个方向上使用4的步幅(步长)。

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

包含一个3-D卷积层数组中。

层= [...image3dInputLayer([28 28 28 3])“步”4) reluLayer maxPooling3dLayer (2“步”,4) softmaxLayer (10) softmaxLayer classificationLayer
图层= 7x1层阵列,具有图层:1''3-D图像输入28x28x28x3图像,具有“Zerocenter”归一化2''''卷积16 5x5x5卷曲的卷程[4 4 4]和填充[0 0 0;0 0 0] 3''Relu Relu 4''3-D最大池2x2x2 max汇集步进[4 4 4]和填充[0 0 0;0 0 0] 5''完全连接的10完全连接的第6层'Softmax Softmax 7''分类输出Crossentropyex

要指定权重和偏差初始化式函数,请使用WeightsInitializerBiasInitializer属性分别。要直接指定权重和偏差,请使用权重偏见属性分别。

指定初始化函数

创建一个带有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:[]显示所有属性

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

指定自定义初始化函数

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

创建一个带有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:[]显示所有属性

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

直接指定权重和偏差

创建一个与彩色图像兼容的三维卷积层。设置权重和偏差为Wb在MAT文件中conv3dweights.mat分别。

filterSize = 5;numFilters = 32;负载Conv3dWeights层= convolution3dLayer (filterSize numFilters,...“重量”W,...'偏见', b)
layer = Convolution3DLayer with properties: Name: " Hyperparameters FilterSize: [5 5 5] NumChannels: 3 NumFilters: 32 Stride: [1 1 1] DilationFactor: [1 1 1] PaddingMode: 'manual' PaddingSize: [2x3 double] PaddingValue: 0 Learnable Parameters Weights: [5- d double] Bias: [1x1x1x32 double]显示所有属性

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

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

确保卷积完全覆盖输入。为了使卷积完全覆盖输入,输出维数必须是整数。当没有扩张时输出维度计算为) - 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])
layer = Convolution3DLayer with properties: Name: " Hyperparameters FilterSize: [6 4 5] NumChannels: 'auto' NumFilters: 16 Stride: [4 4 4] DilationFactor: [1 1 1] PaddingMode: 'manual' PaddingSize: [2x3 double] PaddingValue: 0 Learnable Parameters Weights: [] Bias:[]显示所有属性

更多关于

展开全部

参考文献

[1] Glorot,Xavier和Yoshua Bengio。“了解训练深馈神经网络的难度。”在第十三届国际人工智能和统计会议论文集, 249 - 356。撒丁岛,意大利:AISTATS, 2010。

何开明,张翔宇,任少青,孙健深入研究整流器:在图像网分类上超越人类水平的表现。在2015 IEEE计算机视觉国际会议论文集,1026-1034。华盛顿特区:IEEE计算机视觉协会,2015年。

介绍了R2019a