主要内容

fullyConnectedLayer

全连接层

描述

全连接层将输入乘以权重矩阵,然后添加偏置向量。

创建

描述

= fullyConnectedLayer (outputSize返回一个完全连接的层,并指定OutputSize财产。

例子

= fullyConnectedLayer (outputSize名称,值设置可选的参数和初始化学习率和正则化,的名字属性使用名称-值对。例如,fullyConnectedLayer(10、“名称”、“fc1”)创建一个全连接层,输出大小为10,名称为“fc1”.可以指定多个名称-值对。将每个属性名用单引号括起来。

属性

全部展开

完全连接

全连接层的输出大小,指定为正整数。

例子:10

全连接层的输入大小,指定为正整数或“汽车”.如果InputSize“汽车”,然后软件在训练过程中自动确定输入大小。

参数和初始化

函数初始化权重,指定为以下之一:

  • “glorot”-使用Glorot初始化器初始化权重[1](也称为Xavier初始化器)。格洛洛特初始化器独立地从均值和方差为零的均匀分布中采样2/(InputSize + OutputSize)

  • “他”-使用He初始化式初始化权重[2].He初始化器样本来自均值和方差为零的正态分布2 / InputSize

  • “正交”-初始化输入权重的QR分解给出的正交矩阵ZR对于一个随机矩阵Z从单位正态分布抽样。[3]

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

  • “零”-用0初始化权重。

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

  • 函数句柄——使用自定义函数初始化权重。如果指定了函数句柄,则该函数必须为权重= func(sz),在那里深圳就是权重的大小。有关示例,请参见指定自定义权重初始化函数

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

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

函数初始化偏差,指定为以下之一:

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

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

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

  • 函数句柄-使用自定义函数初始化偏置。如果指定了函数句柄,则该函数必须为偏差= func(sz),在那里深圳是偏差的大小。

时,层才初始化偏差偏见属性为空。

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

层权重,指定为矩阵。

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

在训练时,权重是一个OutputSize——- - - - - -InputSize矩阵。

数据类型:|

层偏差,指定为矩阵。

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

在训练时,偏见是一个OutputSize——- - - - - -1矩阵。

数据类型:|

学习率和正则化

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

该软件将该因子乘以全局学习率,以确定该层权重的学习率。例如,如果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函数自动为具有该名称的层分配名称

数据类型:字符|字符串

此属性是只读的。

该层的输入数量。该层只接受单个输入。

数据类型:

此属性是只读的。

输入层的名称。该层只接受单个输入。

数据类型:细胞

此属性是只读的。

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

数据类型:

此属性是只读的。

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

数据类型:细胞

例子

全部折叠

创建一个全连接层,输出大小为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]显示所有属性

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

算法

全部展开

参考文献

格洛洛特,泽维尔,还有约书亚·本吉奥。《理解深度前馈神经网络训练的难度》在第十三届人工智能与统计国际会议论文集, 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中引入

全部展开