主要内容

初始化函数可学的参数模型

当你训练一个网络使用层,层图,或dlnetwork对象,软件自动初始化可学的参数根据层初始化属性。当你深入学习模型定义为一个函数,您必须手动初始化参数可学的。

如何初始化可学的参数(例如,重量和偏见)可以产生重大影响深度学习模型收敛的速度有多快。

提示

这一主题解释了如何初始化参数可学的深入学习循环模型定义了一个函数在一个定制的培训。学习如何指定可学的深度学习层的参数初始化,使用相应的层属性。例如,设置权重的初始值设定项convolution2dLayer对象,使用WeightsInitializer财产。

默认层初始化

此表显示了可学的默认初始化参数为每个层,并提供链接,展示了如何初始化可学的参数模型通过使用相同的初始化函数。

可学的参数 默认初始化
convolution2dLayer 权重 Glorot初始化
偏见 零初始化
convolution3dLayer 权重 Glorot初始化
偏见 零初始化
groupedConvolution2dLayer 权重 Glorot初始化
偏见 零初始化
transposedConv2dLayer 权重 Glorot初始化
偏见 零初始化
transposedConv3dLayer 权重 Glorot初始化
偏见 零初始化
fullyConnectedLayer 权重 Glorot初始化
偏见 零初始化
batchNormalizationLayer 抵消 零初始化
规模 的初始化
lstmLayer 输入重量 Glorot初始化
复发性权重 正交初始化
偏见 单位大门忘记初始化
gruLayer 输入重量 Glorot初始化
复发性权重 正交初始化
偏见 零初始化
wordEmbeddingLayer 权重 高斯函数初始化,意思是0和0.01标准差

可学的参数大小

当初始化可学的参数模型功能,您必须指定参数的正确的大小。可学的参数的大小取决于深度学习操作的类型。

操作 可学的参数 大小
batchnorm 抵消

[numChannels 1],在那里numChannels输入通道的数量吗

规模

[numChannels 1],在那里numChannels输入通道的数量吗

dlconv 权重

[filterSize numChannels numFilters],在那里filterSize是1 -K向量指定过滤器的大小,numChannels输入通道的数量,numFilters过滤器的数量,K是空间维度的数量吗

偏见

下列之一:

  • [numFilters 1],在那里numFilters过滤器的数量吗

  • [1]

dlconv(分组) 权重

[filterSize numChannelsPerGroup numFiltersPerGroup numGroups],在那里filterSize是1 -K向量指定过滤器的大小,numChannelsPerGroup对每一组输入通道的数量,numFiltersPerGroup对每一组过滤器的数量,numGroups组的数量,K是空间维度的数量吗

偏见

下列之一:

  • [numFiltersPerGroup 1],在那里numFiltersPerGroup对每一组过滤器的数量。

  • [1]

dltranspconv 权重

[filterSize numFilters numChannels],在那里filterSize是1 -K向量指定过滤器的大小,numChannels输入通道的数量,numFilters过滤器的数量,K是空间维度的数量吗

偏见

下列之一:

  • [numFilters 1],在那里numFilters对每一组过滤器的数量。

  • [1]

dltranspconv(分组) 权重

[filterSize numFiltersPerGroup numChannelsPerGroup numGroups],在那里filterSize是1 -K向量指定过滤器的大小,numChannelsPerGroup对每一组输入通道的数量,numFiltersPerGroup对每一组过滤器的数量,numGroups组的数量,K是空间维度的数量吗

偏见

下列之一:

  • [numFiltersPerGroup 1],在那里numFiltersPerGroup对每一组过滤器的数量。

  • [1]

fullyconnect 权重

[outputSize inputSize],在那里outputSizeinputSize分别是输出和输入通道的数量吗

偏见

[outputSize 1],在那里outputSize输出通道的数量吗

格勒乌 输入重量

(3 * numHiddenUnits inputSize],在那里numHiddenUnits是隐藏的数量单位的经营吗inputSize输入通道的数量吗

复发性权重

(3 * numHiddenUnits numHiddenUnits],在那里numHiddenUnits是隐藏的数量单位的操作吗

偏见

(3 * numHiddenUnits 1),在那里numHiddenUnits是隐藏的数量单位的操作吗

lstm 输入重量

[4 * numHiddenUnits inputSize],在那里numHiddenUnits是隐藏的数量单位的经营吗inputSize输入通道的数量吗

复发性权重

[4 * numHiddenUnits numHiddenUnits],在那里numHiddenUnits是隐藏的数量单位的操作吗

偏见

(4 * numHiddenUnits 1),在那里numHiddenUnits是隐藏的数量单位的操作吗

Glorot初始化

Glorot(也称为Xavier)初始化器[1]样品重量从均匀分布 ( 6 N o + N , 6 N o + N ] ,的值NoN取决于类型的深度学习操作。

操作 可学的参数 No N
dlconv 权重

刺激(filterSize) * numFilters,在那里filterSize是1 -K向量包含过滤器的大小,numFilters过滤器的数量,K是空间维度的数量吗

刺激(filterSize) * numChannels,在那里filterSize是1 -K向量包含过滤器的大小,numChannels输入通道的数量,K是空间维度的数量吗

dlconv(分组) 权重

刺激(filterSize) * numFiltersPerGroup,在那里filterSize是1 -K向量包含过滤器的大小,numFiltersPerGroup过滤器为每个组的数量,K是空间维度的数量吗

刺激(filterSize) * numChannelsPerGroup,在那里filterSize是1 -K向量包含过滤器的大小,numChannelsPerGroup对每一组输入通道的数量,然后呢K是空间维度的数量吗

dltranspconv 权重

刺激(filterSize) * numFilters,在那里filterSize是1 -K向量包含过滤器的大小,numFilters过滤器的数量,K是空间维度的数量吗

刺激(filterSize) * numChannels,在那里filterSize是1 -K向量包含过滤器的大小,numChannels输入通道的数量,K是空间维度的数量吗

dltranspconv(分组) 权重

刺激(filterSize) * numFiltersPerGroup,在那里filterSize是1 -K向量包含过滤器的大小,numFiltersPerGroup过滤器为每个组的数量,K是空间维度的数量吗

刺激(filterSize) * numChannelsPerGroup,在那里filterSize是1 -K向量包含过滤器的大小,numChannelsPerGroup对每一组输入通道的数量,然后呢K是空间维度的数量吗

fullyconnect 权重 数字输出通道的操作 操作的输入通道的数量
格勒乌 输入重量 3 * numHiddenUnits,在那里numHiddenUnits是隐藏的数量单位的操作吗 操作的输入通道的数量
复发性权重 3 * numHiddenUnits,在那里numHiddenUnits是隐藏的数量单位的操作吗 隐藏的单元操作的数量
lstm 输入重量 4 * numHiddenUnits,在那里numHiddenUnits是隐藏的数量单位的操作吗 操作的输入通道的数量
复发性权重 4 * numHiddenUnits,在那里numHiddenUnits是隐藏的数量单位的操作吗 隐藏的单元操作的数量

初始化使用Glorot可学的参数初始值设定项,您可以定义一个自定义函数。这个函数initializeGlorot获取参数作为输入的大小可学的深圳和值NoN(numOutnumIn分别),抽样权重作为回报dlarray对象与基本类型“单一”

函数重量= initializeGlorot(深圳、numOut numIn) Z = 2 *兰特(深圳,“单一”)- 1;绑定(12 (6 / (numIn + numOut));重量=绑定* Z;重量= dlarray(重量);结束

例子

初始化权重卷积操作128过滤器的大小5-by-5和3输入通道。

filterSize = 5 [5];numChannels = 3;numFilters = 128;深圳= [filterSize numChannels numFilters];numOut =刺激(filterSize) * numFilters;numIn =刺激(filterSize) * numFilters;parameters.conv。权重= initializeGlorot(sz,numOut,numIn);

他的初始化

他初始化[2]样品的重量与零均值和方差的正态分布 2 N ,价值N取决于深度学习操作的类型。

操作 可学的参数 N
dlconv 权重

刺激(filterSize) * numChannelsPerGroup,在那里filterSize是1 -K向量包含过滤器的大小,numChannelsPerGroup对每一组输入通道的数量,然后呢K是空间维度的数量吗

dltranspconv 权重

刺激(filterSize) * numChannelsPerGroup,在那里filterSize是1 -K向量包含过滤器的大小,numChannelsPerGroup对每一组输入通道的数量,然后呢K是空间维度的数量吗

fullyconnect 权重 操作的输入通道的数量
格勒乌 输入重量 操作的输入通道的数量
复发性权重 隐藏的单元操作的数量。
lstm 输入重量 操作的输入通道的数量
复发性权重 隐藏的单元操作的数量。

初始化使用他可学的参数初始值设定项,您可以定义一个自定义函数。这个函数initializeHe获取参数作为输入的大小可学的深圳,值N,并返回权重作为采样dlarray对象与基本类型“单一”

函数numIn权重= initializeHe(深圳)权重= randn(深圳,“单一”)*√2 / numIn);重量= dlarray(重量);结束

例子

初始化权重卷积操作128过滤器的大小5-by-5和3输入通道。

filterSize = 5 [5];numChannels = 3;numFilters = 128;深圳= [filterSize numChannels numFilters];numIn =刺激(filterSize) * numFilters;parameters.conv。权重= initializeHe(sz,numIn);

高斯函数初始化

高斯权重的初始值设定项样本正态分布。

初始化可学的轻松使用高斯参数初始值设定项,您可以定义一个自定义函数。这个函数initializeGaussian获取参数作为输入的大小可学的深圳分布的意思是μ和标准偏差分布σ,并返回权重作为采样dlarray对象与基本类型“单一”

函数重量= initializeGaussian(深圳,μ、σ)权重= randn(深圳,“单一”σ)* +μ;重量= dlarray(重量);结束

例子

初始化权值的嵌入操作维度的300年和5000年词汇量的大小用高斯函数初始值设定项的意思是0和0.01标准差。

embeddingDimension = 300;vocabularySize = 5000;μ= 0;σ= 0.01;深圳= [embeddingDimension vocabularySize];parameters.emb。权重= initializeGaussian(sz,mu,sigma);

统一的初始化

从均匀分布均匀初始化样本权重。

初始化参数可学的轻松使用统一的初始化,您可以定义一个自定义函数。这个函数initializeUniform获取参数作为输入的大小可学的深圳和分布绑定,并返回权重作为采样dlarray对象与基本类型“单一”

函数绑定参数= initializeUniform(深圳)Z = 2 *兰特(深圳,“单一”)- 1;参数Z =绑定*;参数= dlarray(参数);结束

例子

初始化权重的注意机制与大小100 - 0.1 - 100和绑定使用统一的初始值设定项。

深圳= (100 - 100);绑定= 0.1;parameters.attentionn。权重= initializeUniform(sz,bound);

正交初始化

正交初始化器返回正交矩阵由的QR分解Z = QR,在那里Z从单元正态分布和采样的大小Z匹配的大小可学的参数。

初始化可学的轻松使用正交初始化参数,您可以定义一个自定义函数。这个函数initializeOrthogonal获取参数作为输入的大小可学的深圳,并返回正交矩阵dlarray对象与基本类型“单一”

函数参数= initializeOrthogonal(深圳)Z = randn(深圳,“单一”);(Q, R) = qr (Z, 0);D =诊断接头(R);Q = Q *诊断接头(D。/ abs (D));参数= dlarray (Q);结束

例子

初始化的复发性权重LSTM操作100隐藏单位使用正交初始值设定项。

numHiddenUnits = 100;深圳= [4 * numHiddenUnits numHiddenUnits];parameters.lstm。RecurrentWeights = initializeOrthogonal(深圳);

单位大门忘记初始化

单位大门忘记初始化器初始化的偏见LSTM操作这样的忘记门组件偏见的和剩下的条目是0。

初始化可学的轻松使用正交初始化参数,您可以定义一个自定义函数。这个函数initializeUnitForgetGate需要作为输入隐藏单位的数量LSTM操作,并返回偏见的dlarray对象与基本类型“单一”

函数偏见= initializeUnitForgetGate (numHiddenUnits)偏见= 0 (4 * numHiddenUnits, 1,“单一”);idx = numHiddenUnits + 1:2 * numHiddenUnits;偏见(idx) = 1;偏见= dlarray(偏差);结束

例子

初始化的偏见LSTM与100隐藏单位使用单位操作忘记门初始值设定项。

numHiddenUnits = 100;parameters.lstm。偏见= initializeUnitForgetGate(numHiddenUnits,“单一”);

的初始化

用容易的初始化可学的参数,您可以定义一个自定义函数。这个函数initializeOnes获取参数作为输入的大小可学的深圳,并返回作为参数dlarray对象与基本类型“单一”

函数参数= initializeOnes(深圳)参数= 1(深圳,“单一”);参数= dlarray(参数);结束

例子

初始化与128年规模为一批规范化操作的输入通道。

numChannels = 128;深圳= [numChannels 1];parameters.bn。规模= initializeOnes(sz);

零初始化

很容易与零初始化可学的参数,您可以定义一个自定义函数。这个函数initializeZeros获取参数作为输入的大小可学的深圳,并返回作为参数dlarray对象与基本类型“单一”

函数参数= initializeZeros(深圳)参数= 0(深圳,“单一”);参数= dlarray(参数);结束

例子

初始化的抵消一批规范化操作的输入通道128和0。

numChannels = 128;深圳= [numChannels 1];parameters.bn。抵消= initializeZeros(sz);

存储可学的参数

建议将可学的参数对于一个给定的模型函数存储在一个单独的对象,如结构、表或单元阵列。为一个例子,演示如何初始化可学的参数结构,明白了列车网络的使用模型的功能

存储参数对GPU

如果你使用GPU训练你的模型,那么软件转换函数的可学的参数模型gpuArray对象存储在GPU上。

,让它更容易负载可学的参数对机器没有GPU,推荐的做法是收集所有本地工作区之前保存的参数。收集可学的参数存储为一个结构,表,或单元阵列dlarray对象,使用dlupdate函数与收集函数。举个例子,如果你有网络可学的参数存储在GPU上的结构、表或单元阵列参数,您可以将参数传输到本地工作区使用下面的代码:

参数= dlupdate (@gather、参数);

如果负载不是GPU可学的参数,你可以移动到GPU使用的参数dlupdate函数与gpuArray函数。这样做可以确保您的网络上执行培训和推理的GPU,无论输入数据的存储位置。例如,将参数存储在结构、表或单元阵列参数GPU可以传递参数,使用下面的代码:

参数= dlupdate (@gpuArray、参数);

引用

[1]Glorot,泽维尔,Yoshua Bengio。“理解的难度训练前馈神经网络。”In《十三人工智能国际会议上和统计,249 - 356。意大利撒丁岛:AISTATS, 2010。

[2]他开明、象屿张任Shaoqing,剑太阳。“深深入整流器:超越人类表现ImageNet分类。”In学报2015年IEEE计算机视觉国际会议,1026 - 1034。华盛顿特区:IEEE计算机视觉的社会,2015年。

另请参阅

|||

相关的话题