fullyConnectedLayer
完全连接层
描述
一个完全连接层增加输入权重矩阵,然后添加一个偏差向量。
创建
描述
返回一个完全连接层和指定层
= fullyConnectedLayer (outputSize
)OutputSize
财产。
属性
完全连接
OutputSize
- - - - - -输出的大小
正整数
输出大小完全连接层,指定为一个正整数。
例子:10
InputSize
- - - - - -输入的大小
“汽车”
(默认)|正整数
输入大小完全连接层,一个正整数或指定“汽车”
。如果InputSize
是“汽车”
,那么软件自动确定输入的大小在训练。
参数和初始化
WeightsInitializer
- - - - - -函数来初始化权重
“glorot”
(默认)|“他”
|“正交”
|“narrow-normal”
|“零”
|“的”
|函数处理
初始化权重函数,指定为以下之一:
“glorot”
——初始化权重Glorot初始值设定项[1](也称为Xavier初始化)。Glorot初始化样本独立均匀分布与零均值和方差2 / (InputSize + OutputSize)
。“他”
——初始化权重的初始值设定项[2]。他初始化样本正态分布与零均值和方差2 / InputSize
。“正交”
——初始化输入权重问正交矩阵的QR分解Z=问R对于一个随机矩阵Z抽样单位正态分布。[3]“narrow-normal”
——初始化权重独立抽样从正态分布与零均值和标准偏差0.01。“零”
——初始化权重为零。“的”
——初始化权重的。函数处理——使用一个自定义函数初始化权重。如果你指定一个函数处理,那么必须表单的功能
重量= func(深圳)
,在那里深圳
权重的大小。例如,看到的指定自定义权重的初始化函数。
层只初始化时的重量权重
属性是空的。
数据类型:字符
|字符串
|function_handle
BiasInitializer
- - - - - -函数来初始化的偏见
“零”
(默认)|“narrow-normal”
|“的”
|函数处理
函数来初始化偏见,指定为以下之一:
“零”
——初始化与零偏差。“的”
——初始化偏见的。“narrow-normal”
——初始化倾向独立抽样从正态分布的均值为零,标准差为0.01。函数处理与一个自定义函数,初始化偏见。如果你指定一个函数处理,那么必须表单的功能
偏见= func(深圳)
,在那里深圳
偏差的大小。
层只初始化时的偏见偏见
属性是空的。
数据类型:字符
|字符串
|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”)
层= FullyConnectedLayer属性:名称:‘fc1 Hyperparameters InputSize:“汽车”OutputSize: 10可学的参数权重:[]偏见:[]显示所有属性
在一个包括一个完全连接层层
数组中。
层= […imageInputLayer([1] 28日28日)convolution2dLayer (5、20) reluLayer maxPooling2dLayer (2“步”,2)fullyConnectedLayer (10) softmaxLayer classificationLayer]
层= 7 x1层与层:数组1”的形象输入28 x28x1图像zerocenter正常化2”二维卷积20 5 x5旋转步[1]和填充[0 0 0 0]3”ReLU ReLU 4”二维最大池2 x2马克斯池步(2 - 2)和填充[0 0 0 0]5“完全连接10完全连接层6”Softmax Softmax crossentropyex 7”分类输出
指定初始重量和偏见完全连接层
指定重量和偏见初始化函数,使用WeightsInitializer
和BiasInitializer
属性分别。直接指定重量和偏见,使用权重
和偏见
属性分别。
指定初始化函数
创建一个完全连接层和一个输出大小为10和指定要他初始化权值初始化。
outputSize = 10;层= fullyConnectedLayer (outputSize,“WeightsInitializer”,“他”)
层= FullyConnectedLayer属性:名称:“Hyperparameters InputSize:“汽车”OutputSize: 10可学的参数权重:[]偏见:[]显示所有属性
请注意,权重
和偏见
属性是空的。在训练时,软件初始化这些属性使用指定的初始化函数。
指定自定义初始化函数
指定自己的初始化函数的重量和偏见,设置WeightsInitializer
和BiasInitializer
属性函数处理。对于这些属性,指定函数句柄将重量和偏见的大小作为输入和输出初始化值。
创建一个完全连接层与输出尺寸10,并指定初始化样本权重和偏见从高斯分布的标准偏差为0.0001。
outputSize = 10;weightsInitializationFcn = @(深圳)兰德(深圳)* 0.0001;biasInitializationFcn = @(深圳)兰德(深圳)* 0.0001;层= fullyConnectedLayer (outputSize,…“WeightsInitializer”@兰德(深圳)* 0.0001(深圳),…“BiasInitializer”@(深圳)兰德(深圳)* 0.0001)
层= FullyConnectedLayer属性:名称:“Hyperparameters InputSize:“汽车”OutputSize: 10可学的参数权重:[]偏见:[]显示所有属性
再一次,权重
和偏见
属性是空的。在训练时,软件初始化这些属性使用指定的初始化函数。
直接指定重量和偏见
创建一个完全连接层和一个输出大小为10和设置权重和偏见W
和b
在垫子上文件FCWeights.mat
分别。
outputSize = 10;负载FCWeights层= fullyConnectedLayer (outputSize,…“重量”W,…“偏见”,b)
层= FullyConnectedLayer属性:名称:“Hyperparameters InputSize: 720 OutputSize: 10可学的参数权重:[10 x720双)偏见:x1双[10]显示所有属性
在这里,权重
和偏见
属性包含指定值。在训练时,如果这些属性非空,则软件使用指定的值作为初始重量和偏见。在这种情况下,软件不使用初始化功能。
算法
完全连接层
一个完全连接层增加输入权重矩阵,然后添加一个偏差向量。
卷积(和采样下来)层后面跟着一个或多个完全连接层。
顾名思义,所有神经元完全连接层连接到所有的神经元在前面的层。这一层结合的所有功能(本地信息)学习通过前面的层在图像识别更大的模式。对于分类问题,最后完全连接层结合了特征对图像进行分类。这是原因outputSize
争论的最后完全连接层网络等于数据集的类的数量。对于回归问题,输出大小必须等于响应变量的数量。
您还可以调整学习速率和正则化参数这一层使用名称-值对相关参数在创建完全连接层。如果你选择不调整它们,然后trainNetwork
使用全球训练参数定义的trainingOptions
函数。在全球和层培训选项的详细信息,请参见设置参数和卷积神经网络训练。
完全连接层增加权重矩阵的输入W然后添加一个偏差向量b。
如果层是一个序列的输入(例如,在一个LSTM网络),然后完全连接层行为独立在每个时间步。例如,如果层之前完全连接层输出数组X的大小D——- - - - - -N——- - - - - -年代,然后完全连接层输出数组Z的大小outputSize
——- - - - - -N——- - - - - -年代。在时间步t的,相应的条目Z是
,在那里
表示时间步t的X。
完全连接层平输出。他们对空间数据编码通道尺寸通过重塑输出数据。完全连接层SeriesNetwork
和DAGNetwork
对象与相同数量的输出数据的空间维度作为输入输出数据与空间维度的大小。完全连接层dlnetwork
对象删除输出的空间维度。
层的输入和输出格式
层一层一层数组或图后续层传递数据格式化dlarray
对象。的格式dlarray
对象是一个字符串,其中每个字符描述相应的维度的数据。这些字符的格式由一个或多个:
“S”
——空间“C”
——频道“B”
——批“T”
——时间“U”
——未指明的
例如,二维图像数据表示成一个四维数组,第一个二维对应于图像的空间维度,第三维对应于图像的通道,第四个维度对应批维度,可以被描述为有格式“SSCB”
(空间、空间、通道、批)。
你可以与这些交互dlarray
对象等自动分化工作流开发一个自定义图层,使用functionLayer
对象,或使用向前
和预测
功能与dlnetwork
对象。
此表显示了支持输入格式金宝appFullyConnectedLayer
对象和相应的输出格式。如果输出层的传递给一个定制的层不继承nnet.layer.Formattable
类,或FunctionLayer
对象的Formattable
属性设置为0
(假),然后层接收未格式化dlarray
对象的尺寸要求相应的这个表的格式。
输入格式 | 输出格式 | |
---|---|---|
SeriesNetwork 和DAGNetwork 对象 |
dletwork 对象 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
在dlnetwork
对象,FullyConnectedLayer
对象也支持下面的输入和输出金宝app格式的组合。
输入格式 | 输出格式 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
使用这些输入格式trainNetwork
工作流,首先将数据转换为“认知行为治疗”
(通道、批量、时间)格式使用flattenLayer
。
引用
[1]Glorot,泽维尔,Yoshua Bengio。“理解的难度训练前馈神经网络。”在《十三人工智能国际会议上和统计,249 - 356。意大利撒丁岛:AISTATS, 2010。https://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf
[2]他开明、象屿张任Shaoqing,剑太阳。“深深入整流器:超越人类表现ImageNet分类。”在学报2015年IEEE计算机视觉国际会议,1026 - 1034。华盛顿特区:IEEE计算机视觉的社会,2015年。https://doi.org/10.1109/ICCV.2015.123
[3]萨克斯,安德鲁·M。,James L. McClelland, and Surya Ganguli. "Exact solutions to the nonlinear dynamics of learning in deep linear neural networks."arXiv预印本arXiv: 1312.6120(2013)。
扩展功能
C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。
GPU的代码生成
生成NVIDIA的CUDA®代码®GPU使用GPU编码器™。
版本历史
介绍了R2016aR2019a:默认初始化权重Glorot
从R2019a开始,软件,默认情况下,初始化层使用Glorot初始化这一层的权重。这种行为可以帮助稳定培训和通常减少深层网络的训练时间。
在以前的版本中,软件,默认情况下,初始化层的抽样权重0.01零均值和方差的正态分布。复制这种行为,设置“WeightsInitializer”
层的选项“narrow-normal”
。
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。