fullyConnectedLayer
全连接层
描述
全连接层将输入乘以权重矩阵,然后添加偏置向量。
创建
描述
返回一个完全连接的层,并指定层
= fullyConnectedLayer (outputSize
)OutputSize
财产。
属性
完全连接
OutputSize
- - - - - -输出的大小
正整数
全连接层的输出大小,指定为正整数。
例子:10
InputSize
- - - - - -输入的大小
“汽车”
(默认)|正整数
全连接层的输入大小,指定为正整数或“汽车”
.如果InputSize
是“汽车”
,然后软件在训练过程中自动确定输入大小。
参数和初始化
WeightsInitializer
- - - - - -函数初始化权重
“glorot”
(默认)|“他”
|“正交”
|“narrow-normal”
|“零”
|“的”
|函数处理
函数初始化权重,指定为以下之一:
“glorot”
-使用Glorot初始化器初始化权重[1](也称为Xavier初始化器)。格洛洛特初始化器独立地从均值和方差为零的均匀分布中采样2/(InputSize + OutputSize)
.“他”
-使用He初始化式初始化权重[2].He初始化器样本来自均值和方差为零的正态分布2 / InputSize
.“正交”
-初始化输入权重问的QR分解给出的正交矩阵Z=问R对于一个随机矩阵Z从单位正态分布抽样。[3]“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
层的属性。
在训练时,权重
是一个OutputSize
——- - - - - -InputSize
矩阵。
数据类型:单
|双
偏见
- - - - - -层的偏见
[]
(默认)|矩阵
层偏差,指定为矩阵。
层偏差是可学习参数。当你训练一个网络时,如果偏见
非空吗trainNetwork
使用偏见
属性作为初始值。如果偏见
那么是空的trainNetwork
所指定的初始化式BiasInitializer
.
在训练时,偏见
是一个OutputSize
——- - - - - -1
矩阵。
数据类型:单
|双
学习率和正则化
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
函数自动为具有该名称的层分配名称”
.
数据类型:字符
|字符串
NumInputs
- - - - - -输入数量
1
(默认)
此属性是只读的。
该层的输入数量。该层只接受单个输入。
数据类型:双
InputNames
- - - - - -输入名字
{'在'}
(默认)
此属性是只读的。
输入层的名称。该层只接受单个输入。
数据类型:细胞
NumOutputs
- - - - - -输出数
1
(默认)
此属性是只读的。
层的输出数量。这个图层只有一个输出。
数据类型:双
OutputNames
- - - - - -输出的名字
{“出”}
(默认)
此属性是只读的。
输出层的名称。这个图层只有一个输出。
数据类型:细胞
例子
创建全连接层
创建一个全连接层,输出大小为10,名称为“fc1”
.
层= fullyConnectedLayer(10,“名字”,“fc1”)
layer = FullyConnectedLayer with properties: Name: 'fc1'超参数InputSize: 'auto' OutputSize: 10 Learnable Parameters权重:[]偏差:[]显示所有属性
中包含一个完全连接的层层
数组中。
层= [...imageInputLayer([28 28 1]) convolution2dLayer(5,20) reluLayer maxPooling2dLayer(2,“步”,2) fullyConnectedLayer(10) softmaxLayer classificationLayer]
2 "二维卷积20 5x5卷积与stride[1 1]和填充[0 0 0 0 0]3 " ReLU ReLU 4 "二维最大池化2x2最大池化与stride[2 2]和填充[0 0 0 0 0]5 "全连接10全连接层6 " Softmax Softmax 7 "分类输出crossentropyex
在全连接层中指定初始权值和偏差
若要指定权重和偏置初始化函数,请使用WeightsInitializer
而且BiasInitializer
属性分别。要直接指定权重和偏差,请使用权重
而且偏见
属性分别。
指定初始化函数
创建一个输出大小为10的全连接层,并指定weights初始化器为He初始化器。
outputSize = 10;层= fullyConnectedLayer(outputSize,“WeightsInitializer”,“他”)
layer = FullyConnectedLayer with properties: Name: "超参数InputSize: 'auto' OutputSize: 10 Learnable Parameters权重:[]偏差:[]显示所有属性
注意权重
而且偏见
属性为空。在训练时,软件使用指定的初始化函数初始化这些属性。
指定自定义初始化函数
要为权重和偏差指定自己的初始化函数,请设置WeightsInitializer
而且BiasInitializer
属性设置为函数句柄。对于这些属性,指定函数句柄,将权重和偏差的大小作为输入并输出初始化值。
创建一个输出大小为10的全连接层,并指定初始化器,从标准偏差为0.0001的高斯分布中采样权重和偏差。
outputSize = 10;weightsInitializationFcn = @(sz) rand(sz) * 0.0001;biasInitializationFcn = @(sz) rand(sz) * 0.0001;层= fullyConnectedLayer(outputSize,...“WeightsInitializer”,@(sz) rand(sz) * 0.0001,...“BiasInitializer”,@(sz) rand(sz) * 0.0001)
layer = FullyConnectedLayer with properties: Name: "超参数InputSize: 'auto' OutputSize: 10 Learnable Parameters权重:[]偏差:[]显示所有属性
再一次,权重
而且偏见
属性为空。在训练时,软件使用指定的初始化函数初始化这些属性。
直接指定权重和偏差
创建一个输出大小为10的全连接层,并设置权重和偏置为W
而且b
在MAT文件中FCWeights.mat
分别。
outputSize = 10;负载FCWeights层= fullyConnectedLayer(outputSize,...“重量”W,...“偏见”, b)
Name: " Hyperparameters InputSize: 720 OutputSize: 10 Learnable Parameters Weights: [10x720 double] Bias: [10x1 double]显示所有属性
在这里,权重
而且偏见
属性包含指定的值。在训练时,如果这些属性非空,则软件使用指定的值作为初始权重和偏差。在这种情况下,软件不使用初始化函数。
算法
全连接层
全连接层将输入乘以权重矩阵,然后添加偏置向量。
卷积(和向下采样)层后面是一个或多个完全连接层。
顾名思义,完全连接层中的所有神经元都连接到前一层中的所有神经元。这一层结合了前一层在图像中学习到的所有特征(局部信息),以识别更大的模式。对于分类问题,最后一个全连接层结合特征对图像进行分类。这就是为什么outputSize
网络最后一层全连接层的参数等于数据集的类数。对于回归问题,输出大小必须等于响应变量的数量。
在创建全连接层时,您还可以使用相关的名称-值对参数来调整该层的学习率和正则化参数。如果你选择不调整它们,那么trainNetwork
类定义的全局训练参数trainingOptions
函数。有关全局和层训练选项的详细信息,请参见参数设置与卷积神经网络训练.
全连接层将输入乘以权重矩阵W然后加上一个偏置向量b.
如果该层的输入是一个序列(例如,在LSTM网络中),那么全连接层在每个时间步上都独立地起作用。例如,如果在全连接层之前的层输出一个数组X的大小D——- - - - - -N——- - - - - -年代,则全连接层输出一个数组Z的大小outputSize
——- - - - - -N——- - - - - -年代.时间步长t的对应项Z是
,在那里
表示时间步长t的X.
全连接层使输出变平。它重新塑造数组,使空间数据在信道维度中进行编码。
对于序列输入,该层独立地对输入的每个时间步应用完全连接操作。
图层输入和输出格式
层数组或层图中的层将数据以格式化的方式传递给后续层dlarray
对象。的格式dlarray
对象是一个字符串,其中每个字符描述了数据的对应维度。格式由一个或多个字符组成:
“S”
——空间“C”
——频道“B”
——批“T”
——时间“U”
——未指明的
例如,表示为4-D数组的2-D图像数据,其中前两个维度对应于图像的空间维度,第三个维度对应于图像的通道,第四个维度对应于批处理维度,可以被描述为具有格式“SSCB”
(空间,空间,通道,批次)。
你可以与它们交互dlarray
对象在自动区分工作流程中,如开发自定义层,使用functionLayer
对象,或使用向前
而且预测
功能与dlnetwork
对象。
的支持输入格式万博1manbetxFullyConnectedLayer
对象和相应的输出格式。类的自定义层,该自定义层不继承nnet.layer.Formattable
类,或FunctionLayer
对象的Formattable
属性设置为0
(false),则该层接收一个未格式化的dlarray
对象,其维度顺序对应于此表中的格式。
输入格式 | 输出格式 |
---|---|
|
|
|
|
|
|
|
|
|
|
在dlnetwork
对象,FullyConnectedLayer
对象还支持以下输入和输出格万博1manbetx式组合。
输入格式 | 输出格式 |
---|---|
|
|
|
|
|
|
中使用这些输入格式trainNetwork
工作流中,首先将数据转换为“认知行为治疗”
(通道,批次,时间)格式使用flattenLayer
.
参考文献
格洛洛特,泽维尔,还有约书亚·本吉奥。《理解深度前馈神经网络训练的难度》在第十三届人工智能与统计国际会议论文集, 249 - 356。撒丁岛,意大利:AISTATS, 2010。
[2]何开明,张翔宇,任少卿,孙健。“深入研究整流器:在ImageNet分类上超越人类水平的性能。”在2015年IEEE计算机视觉国际会议论文集, 1026 - 1034。华盛顿:IEEE计算机视觉学会,2015。
Saxe, Andrew M., James L. McClelland, Surya Ganguli。“深度线性神经万博 尤文图斯网络中非线性学习动力学的精确解。”arXiv预打印arXiv:1312.6120(2013)。
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
GPU代码生成
使用GPU Coder™为NVIDIA®GPU生成CUDA®代码。
版本历史
在R2016a中引入R2019a:默认的权重初始化是gloriot
从R2019a开始,默认情况下,软件使用Glorot初始化器初始化该层的层权重。这种行为有助于稳定训练,通常会减少深度网络的训练时间。
在以前的版本中,默认情况下,软件通过从均值为零,方差为0.01的正态分布中采样来初始化层权重。要重现此行为,请设置“WeightsInitializer”
图层的选项“narrow-normal”
.
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。