convolution2dLayer
二维卷积层
描述
二维卷积层对二维输入应用滑动卷积滤波器。该层通过沿着输入垂直和水平移动滤波器和计算权重和输入的点积来卷积输入,然后添加一个偏置项。
层卷积的维数取决于层输入:
对于二维图像输入(四维数据,对应于两个空间维度的像素,通道和观测值),该层在空间维度上进行卷积。
对于二维图像序列输入(5维数据,对应于两个空间维度的像素、通道、观测值和时间步长),该层在两个空间维度上进行卷积。
对于一维图像序列输入(四维数据,对应于一个空间维度的像素、通道、观测值和时间步长),该层在空间和时间维度上进行卷积。
创建
语法
描述
创建一个2-D卷积层并设置层
= convolution2dLayer (filterSize
,numFilters
)FilterSize
而且NumFilters
属性。
设置可选的层
= convolution2dLayer (filterSize
,numFilters
,名称,值
)步
,DilationFactor
,NumChannels
,参数和初始化,学习率和正则化,的名字
属性使用名称-值对。要指定输入填充,请使用“填充”
名称-值对参数。例如,convolution2dLayer(11, 96,“大步”4“填充”,1)
创建一个带有96个大小过滤器的二维卷积层(11 11)
,一大步(4 - 4)
,并沿着层输入的所有边缘填充大小为1。可以指定多个名称-值对。将每个属性名用单引号括起来。
输入参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
例子:convolution2dLayer(16日“填充”,“相同”)
创建一个具有16个大小过滤器的2-D卷积层[3 3]
而且“相同”
填充。在训练时,软件计算并设置填充的大小,使层输出与输入大小相同。
填充
- - - - - -输入边填充
[0 0 0 0]
(默认)|非负整数的向量|“相同”
输入边填充,指定为由逗号分隔的对组成“填充”
其中一个价值观是:
“相同”
-增加软件在训练或预测时计算出的大小的padding,使stride = 1时输出与输入大小相同。如果stride大于1,则输出大小为装天花板(inputSize /步)
,在那里inputSize
输入的高度或宽度是和步
是对应维度上的步幅。如果可能的话,软件会在顶部和底部,以及左侧和右侧添加相同数量的填充。如果必须垂直添加的填充值为奇数,则软件将在底部添加额外的填充。如果必须水平添加的填充值为奇数,则软件将在右侧添加额外的填充。非负整数
p
-添加填充大小p
到输入的所有边。向量
[b]
的非负整数-添加填充大小一个
到输入和填充大小的顶部和底部b
向左和向右。向量
[t b l r]
的非负整数-添加填充大小t
到了顶端,b
到底,l
向左,然后r
在输入的右边。
例子:“填充”,1
将一行填充添加到顶部和底部,并将一列填充添加到输入的左侧和右侧。
例子:“填充”,“相同”
添加填充,使输出与输入大小相同(如果stride = 1)。
属性
二维卷积
FilterSize
- - - - - -过滤器的高度和宽度
两个正整数的向量
过滤器的高度和宽度,指定为一个向量[w h]
两个正整数,其中h
是高度和w
是宽度。FilterSize
定义输入中神经元连接的局部区域的大小。
在创建层时,您可以指定FilterSize
作为标量使用相同的值表示高度和宽度。
例子:5 [5]
指定高为5、宽为5的筛选器。
NumFilters
- - - - - -过滤器数量
正整数
此属性是只读的。
筛选器的数目,指定为正整数。这个数字对应于该层中连接到输入中相同区域的神经元数量。这个参数决定了层输出中通道(特征映射)的数量。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
步
- - - - - -遍历输入的步长
[1]
(默认)|两个正整数的向量
垂直和水平遍历输入的步长,指定为向量[b]
两个正整数,其中一个
垂直步长和b
是水平步长。在创建层时,您可以指定步
作为标量,对两个步长使用相同的值。
例子:3 [2]
指定垂直步长为2,水平步长为3。
DilationFactor
- - - - - -扩张卷积因子
[1]
(默认)|两个正整数的向量
扩张卷积(也称为阿特劳斯卷积)的因子,用向量表示[w h]
两个正整数,其中h
是垂直扩张和w
是水平膨胀。在创建层时,您可以指定DilationFactor
作为一个标量,对水平和垂直膨胀使用相同的值。
使用扩张卷积来增加层的接受域(层可以看到的输入区域),而不增加参数数量或计算量。
该层通过在每个过滤器元素之间插入0来扩展过滤器。膨胀因子决定对输入进行采样的步长或等效地决定滤波器的上采样因子。它对应于有效过滤器大小为(过滤器的大小- 1) .*膨胀系数+ 1。例如,带有膨胀因子的3 × 3滤波器(2 - 2)
等效于元素之间为0的5x5过滤器。
例子:3 [2]
PaddingSize
- - - - - -填充尺寸
[0 0 0 0]
(默认)|四个非负整数的向量
要应用于输入边框的填充大小,以向量形式指定[t b l r]
四个非负整数,其中t
是填充到顶部,b
是填充到底部,l
填充应用于左侧,和r
是应用于右侧的填充。
创建图层时,使用“填充”
名称-值对参数指定填充大小。
例子:[1,2 2]
将一行填充添加到顶部和底部,并将两列填充添加到输入的左侧和右侧。
PaddingMode
- - - - - -方法来确定填充大小
“手动”
(默认)|“相同”
方法来确定填充大小,指定为“手动”
或“相同”
.
的值由软件自动设置PaddingMode
基于“填充”
创建层时指定的值。
如果你设置
“填充”
选项为标量或矢量的非负整数,然后软件自动设置PaddingMode
来“手动”
.如果你设置
“填充”
选项“相同”
,然后软件自动设置PaddingMode
来“相同”
并在训练时计算填充的大小,以便当stride = 1时输出与输入具有相同的大小。如果stride大于1,则输出大小为装天花板(inputSize /步)
,在那里inputSize
输入的高度或宽度是和步
是对应维度上的步幅。如果可能的话,软件会在顶部和底部,以及左侧和右侧添加相同数量的填充。如果必须垂直添加的填充值为奇数,则软件将在底部添加额外的填充。如果必须水平添加的填充值为奇数,则软件将在右侧添加额外的填充。
填充
- - - - - -填充尺寸
[0 0]
(默认)|两个非负整数的向量
请注意
填充
属性将在将来的版本中删除。使用PaddingSize
代替。创建一个层时,使用“填充”
名称-值对参数指定填充大小。
垂直和水平应用于输入边框的填充大小,指定为矢量[b]
两个非负整数,其中一个
填充是否应用于输入数据的顶部和底部b
应用于左右两侧的填充。
例子:[1]
将一行填充添加到顶部和底部,并将一列填充添加到输入的左侧和右侧。
PaddingValue
- - - - - -填充数据的值
0(默认)|标量|“symmetric-include-edge”
|“symmetric-exclude-edge”
|“复制”
值来填充数据,指定为以下之一:
PaddingValue |
描述 | 例子 |
---|---|---|
标量 | 使用指定的标量值填充。 |
|
“symmetric-include-edge” |
垫使用输入的镜像值,包括边缘值。 |
|
“symmetric-exclude-edge” |
使用输入的镜像值填充,不包括边缘值。 |
|
“复制” |
填充使用重复边框元素的输入 |
|
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|字符
|字符串
NumChannels
- - - - - -输入通道数
“汽车”
(默认)|正整数
此属性是只读的。
输入通道的数量,指定为下列之一:
“汽车”
-在训练时自动确定输入通道数。正整数-为指定的输入通道数量配置层。
NumChannels
并且层中输入数据的通道数量必须匹配。例如,如果输入是RGB图像,则NumChannels
一定是3。如果输入是带有16个滤波器的卷积层的输出,则NumChannels
必须是16岁。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|字符
|字符串
参数和初始化
WeightsInitializer
- - - - - -函数初始化权重
“glorot”
(默认)|“他”
|“narrow-normal”
|“零”
|“的”
|函数处理
函数初始化权重,指定为以下之一:
“glorot”
-使用Glorot初始化器初始化权重[4](也称为Xavier初始化器)。格洛洛特初始化器独立地从均值和方差为零的均匀分布中采样2/(numIn + numOut)
,在那里numIn = FilterSize(1)*FilterSize(2)*NumChannels
而且numOut = FilterSize(1)*FilterSize(2)*NumFilters
.“他”
-使用He初始化式初始化权重[5].He初始化器样本来自均值和方差为零的正态分布2 / numIn
,在那里numIn = FilterSize(1)*FilterSize(2)*NumChannels
.“narrow-normal”
-通过从均值为0,标准差为0.01的正态分布中独立抽样来初始化权重。“零”
-用0初始化权重。“的”
-用1初始化权重。函数句柄——使用自定义函数初始化权重。如果指定了函数句柄,则该函数必须为
权重= func(sz)
,在那里深圳
就是权重的大小。有关示例,请参见指定自定义权重初始化函数.
时,层才初始化权重权重
属性为空。
数据类型:字符
|字符串
|function_handle
BiasInitializer
- - - - - -函数初始化偏置
“零”
(默认)|“narrow-normal”
|“的”
|函数处理
函数初始化偏差,指定为以下之一:
“零”
-用0初始化偏差。“的”
-用1初始化偏差。“narrow-normal”
-通过从均值为零、标准差为0.01的正态分布中独立抽样来初始化偏差。函数句柄-使用自定义函数初始化偏置。如果指定了函数句柄,则该函数必须为
偏差= func(sz)
,在那里深圳
是偏差的大小。
时,层才初始化偏差偏见
属性为空。
数据类型:字符
|字符串
|function_handle
权重
- - - - - -层的重量
[]
(默认)|数字数组
卷积层的层权重,指定为数值数组。
层权值是可学习的参数。属性可以直接指定权重的初始值权重
层的属性。当你训练一个网络时,如果权重
属性为非空,则trainNetwork
使用权重
属性作为初始值。如果权重
那么,属性是空的trainNetwork
属性指定的初始化式WeightsInitializer
层的属性。
在训练时,权重
是一个FilterSize (1)
——- - - - - -FilterSize (2)
——- - - - - -NumChannels
——- - - - - -NumFilters
数组中。
数据类型:单
|双
偏见
- - - - - -层的偏见
[]
(默认)|数字数组
卷积层的层偏置,指定为数值数组。
层偏差是可学习参数。当你训练一个网络时,如果偏见
非空吗trainNetwork
使用偏见
属性作为初始值。如果偏见
那么是空的trainNetwork
所指定的初始化式BiasInitializer
.
在训练时,偏见
是1x1by -NumFilters
数组中。
数据类型:单
|双
学习率和正则化
WeightLearnRateFactor
- - - - - -学习率因子的权重
1
(默认)|负的标量
权重的学习率因子,指定为非负标量。
该软件将该因子乘以全局学习率,以确定该层权重的学习率。例如,如果WeightLearnRateFactor
是2
,则该层权重的学习率为当前全局学习率的两倍。方法指定的设置,该软件根据设置确定全局学习率trainingOptions
函数。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
BiasLearnRateFactor
- - - - - -学习率因素偏差
1
(默认)|负的标量
偏差的学习率因子,指定为非负标量。
该软件将该因子乘以全局学习率,以确定该层偏差的学习率。例如,如果BiasLearnRateFactor
是2
,则该层中偏差的学习率为当前全局学习率的两倍。方法指定的设置,该软件根据设置确定全局学习率trainingOptions
函数。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
WeightL2Factor
- - - - - -l2权重的正则化因子
1(默认)|负的标量
l2权重的正则化因子,指定为非负标量。
软件将这个因子乘以全局l2正则化因子的确定l2这一层权重的正则化。例如,如果WeightL2Factor
是2
,则l2这一层权重的正则化是全局的两倍l2正则化因子。可以指定全局变量l2正则化因子使用trainingOptions
函数。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
BiasL2Factor
- - - - - -l2偏差的正则化因子
0
(默认)|负的标量
l2偏差的正则化因子,指定为非负标量。
软件将这个因子乘以全局l2正则化因子的确定l2这一层偏差的正则化。例如,如果BiasL2Factor
是2
,则l2这一层偏差的正则化是全局偏差的两倍l2正则化因子。可以指定全局变量l2正则化因子使用trainingOptions
函数。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
层
的名字
- - - - - -层的名字
”
(默认)|特征向量|字符串标量
层名,指定为字符向量或字符串标量。为层
数组输入时,trainNetwork
,assembleNetwork
,layerGraph
,dlnetwork
函数自动为具有name的层分配名称”
.
数据类型:字符
|字符串
NumInputs
- - - - - -输入数量
1
(默认)
此属性是只读的。
该层的输入数量。该层只接受单个输入。
数据类型:双
InputNames
- - - - - -输入名字
{'在'}
(默认)
此属性是只读的。
输入层的名称。该层只接受单个输入。
数据类型:细胞
NumOutputs
- - - - - -输出数
1
(默认)
此属性是只读的。
层的输出数量。这个图层只有一个输出。
数据类型:双
OutputNames
- - - - - -输出的名字
{“出”}
(默认)
此属性是只读的。
输出层的名称。这个图层只有一个输出。
数据类型:细胞
例子
创建卷积层
创建一个带有96个过滤器的卷积层,每个过滤器的高和宽为11。在水平和垂直方向上使用4的步幅(步长)。
层=卷积2dlayer (11,96,“步”4)
layer = Convolution2DLayer with properties: Name: " Hyperparameters FilterSize: [11 11] NumChannels: 'auto' NumFilters: 96 Stride: [4 4] DilationFactor: [11] PaddingMode: 'manual' PaddingSize: [0 0 0 0 0] PaddingValue: 0 Learnable Parameters Weights: [] Bias:[]显示所有属性
函数中包含卷积层层
数组中。
图层= [imageInputLayer([28 28 1]) convolution2dLayer(5,20) reluLayer maxPooling2dLayer(2,“步”,2) fullyConnectedLayer(10) softmaxLayer classificationLayer]
2 " Convolution 20 5x5 convolutions with stride [1 1] and padding [0 0 0 0 0] 3 " ReLU ReLU 4 " Max Pooling 2x2 Max Pooling with stride [2 2] and padding [0 0 0 0 0] 5 " Fully Connected 10 Fully Connected Layer 6 " Softmax Softmax 7 " Classification Output crossentropyex
在卷积层中指定初始权值和偏差
若要指定权重和偏置初始化函数,请使用WeightsInitializer
而且BiasInitializer
属性分别。要直接指定权重和偏差,请使用权重
而且偏见
属性分别。
指定初始化函数
创建一个带有32个过滤器的卷积层,每个过滤器的高度和宽度为5,并指定weights初始化器为He初始化器。
filterSize = 5;numFilters = 32;层=卷积2dlayer (filterSize,numFilters,...“WeightsInitializer”,“他”)
layer = Convolution2DLayer with properties: Name: " Hyperparameters FilterSize: [5 5] NumChannels: 'auto' NumFilters: 32 Stride: [1 1] DilationFactor: [1 1] PaddingMode: 'manual' PaddingSize: [0 0 0 0 0] PaddingValue: 0 Learnable Parameters Weights: [] Bias:[]显示所有属性
注意权重
而且偏见
属性为空。在训练时,软件使用指定的初始化函数初始化这些属性。
指定自定义初始化函数
要为权重和偏差指定自己的初始化函数,请设置WeightsInitializer
而且BiasInitializer
属性设置为函数句柄。对于这些属性,指定函数句柄,将权重和偏差的大小作为输入并输出初始化值。
创建一个具有32个过滤器的卷积层,每个过滤器的高和宽为5,并指定初始化器,从标准偏差为0.0001的高斯分布中采样权重和偏差。
filterSize = 5;numFilters = 32;层=卷积2dlayer (filterSize,numFilters,...“WeightsInitializer”, @(sz) rand(sz) * 0.0001,...“BiasInitializer”, @(sz) rand(sz) * 0.0001)
layer = Convolution2DLayer with properties: Name: " Hyperparameters FilterSize: [5 5] NumChannels: 'auto' NumFilters: 32 Stride: [1 1] DilationFactor: [1 1] PaddingMode: 'manual' PaddingSize: [0 0 0 0 0] PaddingValue: 0 Learnable Parameters Weights: [] Bias:[]显示所有属性
再一次,权重
而且偏见
属性为空。在训练时,软件使用指定的初始化函数初始化这些属性。
直接指定权重和偏差
创建一个输出大小为10的全连接层,并设置权重和偏置为W
而且b
在MAT文件中Conv2dWeights.mat
分别。
filterSize = 5;numFilters = 32;负载Conv2dWeights层=卷积2dlayer (filterSize,numFilters,...“重量”W,...“偏见”, b)
layer = Convolution2DLayer with properties: Name: " Hyperparameters FilterSize: [5 5] NumChannels: 3 NumFilters: 32 Stride: [1 1] DilationFactor: [1 1] PaddingMode: 'manual' PaddingSize: [0 0 0 0 0] PaddingValue: 0 Learnable Parameters Weights: [5x5x3x32 double] Bias: [1x1x32 double]显示所有属性
在这里,权重
而且偏见
属性包含指定的值。在训练时,如果这些属性非空,则软件使用指定的值作为初始权重和偏差。在这种情况下,软件不使用初始化函数。
创建完全覆盖输入的卷积层
假设输入的大小是28乘28乘1。创建一个带有16个过滤器的卷积层,每个过滤器的高为6,宽为4。设置水平和垂直步幅为4。
确保卷积完全覆盖输入。为了使卷积完全覆盖输入,水平和垂直的输出维度都必须是整数。如果水平输出维度为整数,则需要在图像的顶部和底部填充一行:(28 - 6+ 2 * 1)/4 + 1 = 7。对于垂直输出维度为整数,不需要补零:(28 - 4+ 2 * 0)/4 + 1 = 7。
构造卷积层。
layer = convolution2dLayer([6 4],16,“步”4“填充”1, [0])
layer = Convolution2DLayer with properties: Name: " Hyperparameters FilterSize: [6 4] NumChannels: 'auto' NumFilters: 16 Stride: [4 4] DilationFactor: [1 1 1] PaddingMode: 'manual' PaddingSize: [1 1 0 0] PaddingValue: 0 Learnable Parameters Weights: [] Bias:[]显示所有属性
算法
二维卷积层
二维卷积层对二维输入应用滑动卷积滤波器。该层通过沿着输入垂直和水平移动滤波器来卷积输入,计算权重和输入的点积,然后添加偏置项。
层卷积的维数取决于层输入:
对于二维图像输入(四维数据,对应于两个空间维度的像素,通道和观测值),该层在空间维度上进行卷积。
对于二维图像序列输入(5维数据,对应于两个空间维度的像素、通道、观测值和时间步长),该层在两个空间维度上进行卷积。
对于一维图像序列输入(四维数据,对应于一个空间维度的像素、通道、观测值和时间步长),该层在空间和时间维度上进行卷积。
卷积层由各种组件组成。1
卷积层由连接到输入图像的子区域或前一层输出的神经元组成。该层在扫描图像时学习由这些区域定位的特征。创建一个层时使用convolution2dLayer
函数指定这些区域的大小filterSize
输入参数。
对于每个区域,trainNetwork
函数计算权重和输入的点积,然后添加一个偏置项。应用于图像中某个区域的一组权重称为过滤器.过滤器沿输入图像垂直和水平移动,对每个区域重复相同的计算。换句话说,滤波器对输入进行卷积。
这张图片显示了一个3乘3的过滤器扫描输入。下面的映射表示输入,上面的映射表示输出。
过滤器移动的步长称为a步.属性指定步长步
名称-值对参数。神经元连接的局部区域可以重叠,这取决于filterSize
而且“步”
值。
这张图片显示了一个3 × 3的过滤器以2的步幅扫描输入。下面的映射表示输入,上面的映射表示输出。
一个过滤器中权重的数量是h*w*c,在那里h是高度,和w是滤波器的宽度,分别和c输入中的通道数。例如,如果输入是彩色图像,则彩色通道的数量为3。过滤器的数量决定了卷积层输出中的通道数量。属性指定筛选器的数目numFilters
参数convolution2dLayer
函数。
扩张卷积是一种通过在滤波器的元素之间插入空间来扩展滤波器的卷积。属性指定膨胀因子“DilationFactor”
财产。
使用扩张卷积来增加层的接受域(层可以看到的输入区域),而不增加参数数量或计算量。
该层通过在每个过滤器元素之间插入0来扩展过滤器。膨胀因子决定对输入进行采样的步长或等效地决定滤波器的上采样因子。它对应于有效过滤器大小为(过滤器的大小- 1) .*膨胀系数+ 1。例如,带有膨胀因子的3 × 3滤波器(2 - 2)
等效于元素之间为0的5x5过滤器。
这张图片显示了一个放大了两倍的3 × 3滤波器对输入进行扫描。下面的映射表示输入,上面的映射表示输出。
当滤波器沿着输入移动时,它对卷积使用相同的权重集和相同的偏置,形成一个特征映射.每个特征映射都是使用不同的权重集和不同的偏置进行卷积的结果。因此,特征映射的数量等于过滤器的数量。卷积层的参数总数为((h*w*c+ 1) *过滤器数量),其中1为偏差。
方法也可以在垂直和水平方向上对输入图像边框应用填充“填充”
名称-值对参数。填充是附加到输入的边界的值,以增加输入的大小。通过调整填充,你可以控制图层的输出大小。
这张图片显示了一个3乘3的过滤器扫描输入,填充大小为1。下面的映射表示输入,上面的映射表示输出。
卷积层的输出高度和宽度为(输入的大小- ((过滤器的大小- 1) *膨胀系数+ 1) + 2*填充) /步+ 1。这个值必须是整数,才能完全覆盖整个图像。如果这些选项的组合没有导致图像被完全覆盖,软件默认情况下会忽略卷积中沿着右侧和底部边缘的图像的其余部分。
例如,输出高度和宽度的乘积给出了特征图中神经元的总数地图大小.卷积层中神经元的总数(输出大小)为地图大小*过滤器数量.
例如,假设输入图像是一个32 × 32 × 3的彩色图像。对于具有8个过滤器,过滤器大小为5 × 5的卷积层,每个过滤器的权重数为5 * 5 * 3 = 75,层中的参数总数为(75 + 1)* 8 = 608。如果每个方向的步幅为2,并且指定了大小为2的填充,那么每个特征映射的尺寸为16 × 16。这是因为(32 - 5 + 2 * 2)/2 + 1 = 16.5,图像右侧和底部的一些最外层填充被丢弃了。最后,该层神经元总数为16 * 16 * 8 = 2048。
通常,来自这些神经元的结果会经过某种形式的非线性,例如整流线性单元(ReLU)。
在定义卷积层时,可以使用名称-值对参数调整该层的学习率和正则化选项。如果您选择不指定这些选项,那么trainNetwork
类定义的全局培训选项trainingOptions
函数。有关全局和层训练选项的详细信息,请参见参数设置与卷积神经网络训练.
卷积神经网络可以由一个或多个卷积层组成。卷积层的数量取决于数据的数量和复杂性。
图层输入和输出格式
层数组或层图中的层传递指定为格式化的数据dlarray
对象。
你可以与它们交互dlarray
自动区分工作流中的对象,例如在开发自定义层时,使用functionLayer
对象,或使用向前
而且预测
功能与dlnetwork
对象。
的支持输入格式金宝appConvolution2DLayer
对象和相应的输出格式。类的自定义层,该自定义层不继承nnet.layer.Formattable
类,或FunctionLayer
对象的Formattable
选项设置为假
,则该层接收一个未格式化的dlarray
对象,其尺寸顺序对应于本表中概述的格式。
输入格式 | 输出格式 |
---|---|
|
|
|
|
|
|
参考文献
Y.勒丘恩,B.博瑟,J. S.丹可,D.亨德森,R. E.霍华德,W.哈伯德和L. D.杰克。"用反向传播网络进行手写数字识别"在神经信息处理系统研究进展2 (D. Touretzky编著)。旧金山:Morgan Kaufmann, 1990。
[2] LeCun, Y., L. Bottou, Y. Bengio, P. Haffner。基于梯度的学习应用于文档识别IEEE论文集.第86卷,第11期,1998年,第2278-2324页。
[3]墨菲,k.p.。机器学习:一个概率的视角.马萨诸塞州剑桥:麻省理工学院出版社,2012年。
格洛洛特,泽维尔,还有约书亚·本吉奥。《理解深度前馈神经网络训练的难度》在第十三届人工智能与统计国际会议论文集, 249 - 356。撒丁岛,意大利:AISTATS, 2010。
[5]何开明,张翔宇,任少卿,孙健。“深入研究整流器:在ImageNet分类上超越人类水平的性能。”在2015年IEEE计算机视觉国际会议论文集, 1026 - 1034。华盛顿:IEEE计算机视觉学会,2015。
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
对于代码生成,使用
PaddingValue
参数必须等于0
,为默认值。
GPU代码生成
使用GPU Coder™为NVIDIA®GPU生成CUDA®代码。
使用注意事项和限制:
对于代码生成,使用
PaddingValue
参数必须等于0
,为默认值。
版本历史
在R2016a中引入R2019a:默认的权重初始化是荣耀
R2019a的行为发生了变化
从R2019a开始,默认情况下,软件使用Glorot初始化器初始化该层的层权重。这种行为有助于稳定训练,通常会减少深度网络的训练时间。
在以前的版本中,默认情况下,软件通过从均值为零,方差为0.01的正态分布中采样来初始化层权重。要重现此行为,请设置“WeightsInitializer”
图层的选项“narrow-normal”
.
另请参阅
trainNetwork
|reluLayer
|batchNormalizationLayer
|maxPooling2dLayer
|fullyConnectedLayer
|groupedConvolution2dLayer
|深度网络设计器
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。