initialize
初始化神经网络的可学习参数和状态参数
说明
提示
大多数 dlnetwork 对象默认已初始化。仅当 dlnetwork 未初始化时,您才需要手动对其进行初始化。您可以使用 dlnetwork 对象的 Initialized 属性来检查网络是否已初始化。
根据网络输入层定义的输入大小,初始化 netUpdated = initialize(net)net 的所有未设置的可学习参数和状态值。任何已包含值的可学习参数或状态参数将保持不变。
如果网络的可学习参数和状态参数为未设置的空值,则该网络处于未初始化状态。您必须先初始化未初始化的 dlnetwork,然后才能使用它。默认情况下,dlnetwork 对象在构造时已配置初始参数,无需初始化。
根据示例网络输入或网络数据布局对象 netUpdated = initialize(net,X1,...,XN)X1,...,XN 初始化 net 的所有未设置的可学习参数和状态值。当网络存在未连接到输入层的输入时,请使用此语法。
示例
将一个简单图像分类网络定义为层数组。
layers = [
imageInputLayer([28 28 1],Normalization="none")
convolution2dLayer(5,20)
batchNormalizationLayer
reluLayer
fullyConnectedLayer(10)
softmaxLayer];将层图转换为 dlnetwork 对象。通过将 Initialize 选项设置为 false 来创建一个未初始化的 dlnetwork 对象。
net = dlnetwork(layers,Initialize=false);
查看网络的可学习参数。由于网络未初始化,这些值为空。
net.Learnables
ans=6×3 table
Layer Parameter Value
___________ _________ ____________
"conv" "Weights" {0×0 double}
"conv" "Bias" {0×0 double}
"batchnorm" "Offset" {0×0 double}
"batchnorm" "Scale" {0×0 double}
"fc" "Weights" {0×0 double}
"fc" "Bias" {0×0 double}
使用 initialize 函数初始化网络的可学习参数。
net = initialize(net);
查看网络的可学习参数。由于网络现已初始化,因此这些值为非空值,大小通过输入层的大小推断得出。
net.Learnables
ans=6×3 table
Layer Parameter Value
___________ _________ ___________________
"conv" "Weights" { 5×5×1×20 dlarray}
"conv" "Bias" { 1×1×20 dlarray}
"batchnorm" "Offset" { 1×1×20 dlarray}
"batchnorm" "Scale" { 1×1×20 dlarray}
"fc" "Weights" {10×11520 dlarray}
"fc" "Bias" {10×1 dlarray}
定义一个多输入图像分类网络。
numFilters = 24;
net = dlnetwork;
layersBranch1 = [
convolution2dLayer(3,6*numFilters,Padding="same",Stride=2)
groupNormalizationLayer("all-channels")
reluLayer
convolution2dLayer(3,numFilters,Padding="same")
groupNormalizationLayer("channel-wise")
additionLayer(2,Name="add")
reluLayer
fullyConnectedLayer(10)
softmaxLayer];
layersBranch2 = [
convolution2dLayer(1,numFilters,Name="conv_branch")
groupNormalizationLayer("all-channels",Name="groupnorm_branch")];
net = addLayers(net, layersBranch1);
net = addLayers(net,layersBranch2);
net = connectLayers(net,"groupnorm_branch","add/in2"); 在图中可视化层。
figure plot(net)

查看网络的可学习参数。由于网络未初始化,这些值为空。
net.Learnables
ans=14×3 table
Layer Parameter Value
__________________ _________ ____________
"conv_1" "Weights" {0×0 double}
"conv_1" "Bias" {0×0 double}
"groupnorm_1" "Offset" {0×0 double}
"groupnorm_1" "Scale" {0×0 double}
"conv_2" "Weights" {0×0 double}
"conv_2" "Bias" {0×0 double}
"groupnorm_2" "Offset" {0×0 double}
"groupnorm_2" "Scale" {0×0 double}
"fc" "Weights" {0×0 double}
"fc" "Bias" {0×0 double}
"conv_branch" "Weights" {0×0 double}
"conv_branch" "Bias" {0×0 double}
"groupnorm_branch" "Offset" {0×0 double}
"groupnorm_branch" "Scale" {0×0 double}
查看网络输入的名称。
net.InputNames
ans = 1×2 cell
{'conv_1'} {'conv_branch'}
创建表示网络输入的随机 dlarray 对象。为网络的主分支使用大小为 64×64、具有 3 个通道的示例输入。为第二个分支使用大小为 64×64、具有 18 个通道的输入。
inputSize = [64 64 3]; inputSizeBranch = [32 32 18]; X1 = dlarray(rand(inputSize),"SSCB"); X2 = dlarray(rand(inputSizeBranch),"SSCB");
使用 initialize 函数初始化网络的可学习参数,并指定示例输入。按照与网络的 InputNames 属性对应的顺序指定输入。
net = initialize(net,X1,X2);
查看网络的可学习参数。由于网络现已初始化,因此这些值为非空值,大小通过输入数据的大小推断得出。
net.Learnables
ans=14×3 table
Layer Parameter Value
__________________ _________ _____________________
"conv_1" "Weights" { 3×3×3×144 dlarray}
"conv_1" "Bias" { 1×1×144 dlarray}
"groupnorm_1" "Offset" { 1×1×144 dlarray}
"groupnorm_1" "Scale" { 1×1×144 dlarray}
"conv_2" "Weights" { 3×3×144×24 dlarray}
"conv_2" "Bias" { 1×1×24 dlarray}
"groupnorm_2" "Offset" { 1×1×24 dlarray}
"groupnorm_2" "Scale" { 1×1×24 dlarray}
"conv_branch" "Weights" { 1×1×18×24 dlarray}
"conv_branch" "Bias" { 1×1×24 dlarray}
"groupnorm_branch" "Offset" { 1×1×24 dlarray}
"groupnorm_branch" "Scale" { 1×1×24 dlarray}
"fc" "Weights" {10×24576 dlarray}
"fc" "Bias" {10×1 dlarray}
创建一个具有两个未连接输入的未初始化 dlnetwork 对象。
layers = [
convolution2dLayer(5,16,Name="conv")
batchNormalizationLayer
reluLayer
fullyConnectedLayer(50)
flattenLayer
concatenationLayer(1,2,Name="cat")
fullyConnectedLayer(10)
softmaxLayer];
net = dlnetwork(layers,Initialize=false);查看网络的输入名称。
net.InputNames
ans = 1×2 cell
{'conv'} {'cat/in2'}
创建表示各输入对应的输入数据的网络数据布局对象。对于第一个输入,指定一批 28×28 的灰度图像。对于第二个输入,指定一批单通道特征数据。
layout1 = networkDataLayout([28 28 1 NaN],"SSCB"); layout2 = networkDataLayout([1 NaN],"CB");
使用网络数据布局对象初始化网络。
net = initialize(net,layout1,layout2)
net =
dlnetwork with properties:
Layers: [8×1 nnet.cnn.layer.Layer]
Connections: [7×2 table]
Learnables: [8×3 table]
State: [2×3 table]
InputNames: {'conv' 'cat/in2'}
OutputNames: {'softmax'}
Initialized: 1
View summary with summary.
输入参数
未初始化的网络,指定为 dlnetwork 对象。
用于确定可学习参数和状态参数的大小和格式的示例网络输入或数据布局,每个输入或布局都指定为下列值之一:
格式化的
dlarray对象格式化的
networkDataLayout对象未格式化的
dlarray对象 (自 R2025a 起)未格式化的
networkDataLayout对象 (自 R2025a 起)
软件通过网络传播 X1,...XN,以确定 dlnetwork 对象的可学习参数和状态参数的适当大小和格式,并初始化任何未设置的可学习参数或状态参数。
要创建接收未格式化数据的神经网络,请使用 inputLayer 对象并且不指定格式。 (自 R2025a 起)
在 R2025a 之前的版本中: X1,...XN 必须是格式化的 dlarray 或 networkDataLayout 对象。
按照输入网络的 InputNames 属性指定的顺序提供示例输入。
注意
自动初始化仅使用输入数据的大小和格式信息。对于依赖于输入数据值的初始化,必须手动初始化可学习参数。
输出参量
已初始化的网络,以已初始化的 dlnetwork 对象形式返回。
initialize 函数不会保留量化信息。如果输入网络是量化网络,则输出网络不包含量化信息。
版本历史记录
在 R2021a 中推出通过将输入 X1,...,XN 指定为未格式化的 dlarray 或未格式化的 networkDataLayout 对象,使用未格式化的数据初始化神经网络。
imageInputLayer 和 sequenceInputLayer 等输入层包含网络用于数据规一化的属性。这些属性是 Mean、StandardDeviation、Min 和 Max。软件使用这些属性来应用由层的 Normalization 属性定义的数据规一化方法。
从 R2023b 开始,当您通过创建初始化的 dlnetwork 或通过使用 initialize 函数来初始化网络时,如果您在创建层时未设置输入层的 Mean、StandardDeviation、Min 和 Max 属性,并且规一化方法需要这些属性,则软件会初始化这些属性。对于使用两个属性的规一化方法(例如 zscore),仅当您在创建层时未设置其中任一属性时,软件才会初始化这些属性。
对于
zerocenter规一化,Mean初始化为0。对于
zscore规一化,Mean初始化为0,StandardDeviation初始化为1。对于
rescale-symmetric规一化,Min初始化为-1,Max初始化为1。对于
rescale-zero-one规一化,Min初始化为0,Max初始化为1。
默认情况下,软件在训练期间自动计算归一化统计信息。要自定义规一化,请手动设置输入层的 Mean、StandardDeviation、Min 和 Max 属性。
在以前的版本中,当您初始化一个包含输入层的网络时,如果该层使用的规一化方法需要您在创建该层时未指定的属性,则软件会报错。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)