主要内容

创建、配置和初始化多层浅神经网络

这一主题提出了典型的多层浅网络工作流的一部分。和其他步骤的更多信息,见多层浅神经网络和反向传播训练

收集数据后,下一步在训练一个网络是创建网络对象。这个函数feedforwardnet创建一个多层前馈网络。如果没有输入参数调用这个函数,那么就会创建一个默认网络对象,没有配置。由此产生的网络可以配置了配置命令。

作为一个例子,该文件bodyfat_dataset.mat包含一组预定义的输入和目标向量。输入向量定义数据关于物理属性和目标的人的价值观定义身体脂肪百分比。加载数据使用下面的命令:

负载bodyfat_dataset

加载这个文件创建两个变量。输入矩阵bodyfatInputs由252名13物理属性的列向量变量对252个不同的人。目标矩阵bodyfatTargets252年由相应的身体脂肪百分比。

下一步是创建一个网络。下面的调用feedforwardnet创建一个两层的网络与10个隐层神经元。(配置步骤期间,输出层神经元的数目设置为1,这是在每个向量的元素数量的目标。)

网= feedforwardnet;网=配置(网,bodyfatInputs, bodyfatTargets);

可以提供可选参数feedforwardnet。例如,第一个参数是一个数组,其中包含在每个隐层神经元的数目。(默认设置为10,这意味着10一个隐层神经元。一个隐藏层一般产生良好的结果,但是你可能想尝试两个隐藏层,如果结果不是足够的。增加隐层神经元的数量会增加网络的力量,但需要更多的计算和更有可能产生过度拟合。第二个参数包含要使用的训练函数的名称。如果没有提供参数,默认的层数是2,默认隐藏层神经元数量是10,和默认的培训功能trainlm。默认为隐藏层传递函数tansig和默认为输出层purelin

配置命令配置网络对象并初始化网络的权重和偏见;因此,网络是为培训做好准备。有些时候你可能想要重新启动权重,或执行一个自定义的初始化。初始化权重(init)初始化过程的细节解释道。你也可以跳过配置步骤,直接去培训网络。的火车命令将自动配置网络和初始化权重。

其他相关的架构

当两层前馈网络可以学习任何输入-输出关系,与更多层前馈网络可能会更快地学习复杂的关系。对于大多数问题,最好从两层开始,然后增加到三层,如果两层的性能是不令人满意。

这个函数cascadeforwardnet创建cascade-forward网络。这些都是类似于前馈网络,但包括体重连接从输入每一层,并从每一层连续层。例如,一个三层网络连接从第一层到第二层,第二层第三层,一层一层1到3。三层网络也已从输入连接到所有三层。额外的连接可能会提高网络学习的速度所需的关系。

这个函数patternnet创建一个网络非常相似feedforwardnet,除了它使用tansig在最后一层传递函数。这个网络通常是用于模式识别。其他网络可以学习动态或时序关系。

初始化权重(init)

训练前馈网络之前,必须初始化权重和偏见。的配置命令自动初始化权重,但是您可能需要重新启动它们。你这样做的初始化命令。这个函数接受一个网络对象作为输入,并返回一个网络对象与所有重量和偏见初始化。这是一个网络初始化(或初始化):

网= init(净);