Main Content

配置浅层神经网络输入和输出

本主题是神经网络设计的工作流中所述的设计工作流的一部分。

在创建神经网络后,必须对其进行配置。配置步骤包括检查输入和目标数据,设置网络的输入和输出大小以匹配数据,以及选择能够实现最佳网络性能的输入和输出处理设置。配置步骤通常在调用训练函数时自动完成。但也可以使用配置函数手动完成配置步骤。例如,要将之前创建的网络配置为逼近一个正弦函数,请发出以下命令:

p = -2:.1:2;
t = sin(pi*p/2);
net1 = configure(net,p,t);

您已为网络提供一组示例输入和目标(所需的网络输出)。使用这些信息,configure 函数可以设置网络输入和输出大小以匹配数据。

配置完成后,如果您再次查看层 1 和层 2 之间的权重,可以看到权重的维度是 1×20。这是因为该网络的目标是标量。

net1.layerWeights{2,1}

    Neural Network Weight

            delays: 0
           initFcn: (none)
        initConfig: .inputSize
             learn: true
          learnFcn: 'learngdm'
        learnParam: .lr, .mc
              size: [1 10]
         weightFcn: 'dotprod'
       weightParam: (none)
          userdata: (your custom info)

除了为权重设置合适的维度以外,配置步骤还定义输入和输出处理的设置。输入处理可以位于 inputs 子对象中:

net1.inputs{1}

    Neural Network Input

              name: 'Input'
    feedbackOutput: []
       processFcns: {'removeconstantrows', mapminmax}
     processParams: {1x2 cell array of 2 params}
   processSettings: {1x2 cell array of 2 settings}
    processedRange: [1x2 double]
     processedSize: 1
             range: [1x2 double]
              size: 1
          userdata: (your custom info)

在将输入应用于网络之前,它将由以下两个函数进行处理:removeconstantrowsmapminmax。这些内容在多层浅层神经网络与反向传播训练中进行了充分讨论,此处不再赘述。这些处理函数可能有一些处理参数,这些参数包含在子对象 net1.inputs{1}.processParam 中。这些参数都有可以覆盖的默认值。处理函数还可以根据样本数据进行配置设置。这些设置包含在 net1.inputs{1}.processSettings 中,并在配置过程中进行设置。例如,mapminmax 处理函数对数据进行归一化,使所有输入都在 [−1, 1] 范围内。其配置设置包括样本数据中的最小值和最大值,它需要这些值来执行正确的归一化。这将在多层浅层神经网络与反向传播训练中进行更深入的讨论。

一般来说,我们使用“参数”(例如在过程参数、训练参数等表述中)一词来表示具有默认值的常量,这些默认值在创建网络时由软件赋予(您可以覆盖这些默认值)。我们使用“配置设置”(例如在过程配置设置中)表示由软件从样本数据分析中指定的常量。这些设置没有默认值,通常不应覆盖。

有关详细信息,另请参阅Understanding Shallow Network Data Structures