训练前馈网络的第一步是建立网络对象。函数newff建立一个可训练的前馈网络。这需要4个输入参数。第一个参数是一个Rx2的矩阵以定义R个输入向量的最小值和最大值。第二个参数是一个颟顸每层神经元个数的数组。第三个参数是包含每层用到的转移函数名称的细胞数组。最后一个参数是用到的训练函数的名称。
举个例子,下面命令将创建一个二层网络。它的输入是两个元素的向量,第一层有三个神经元,第二层有一个神经元。第一层的转移函数是tan-sigmoid,输出层的转移函数是linear。输入向量的第一个元素的范围是-1到2,输入向量的第二个元素的范围是0到5,训练函数是traingd。
net=newff([-1 2; 0 5],[3,1],{"tansig","purelin"},"traingd");
这个命令建立了网络对象并且初始化了网络权重和偏置,因此网络就可以进行训练了。我们可能要多次重新初始化权重或者进行自定义的初始化。下面就是初始化的详细步骤。
在训练前馈网络之前,权重和偏置必须被初始化。初始化权重和偏置的工作用命令init来实现。这个函数接收网络对象并初始化权重和偏置后返回网络对象。下面就是网络如何初始化的:
net = init(net);
我们可以通过设定网络参数net.initFcn和net.layer{i}.initFcn这一技巧来初始化一个给定的网络。net. initFcn用来决定整个网络的初始化函数。前馈网络的缺省值为initlay,它允许每一层用单独的初始化函数。设定了net.initFcn ,那么参数net.layer{i}.initFcn 也要设定用来决定每一层的初始化函数。
对前馈网络来说,有两种不同的初始化方式经常被用到:initwb和initnw。initwb函数根据每一层自己的初始化参数(net.inputWeights{i,j}.initFcn)初始化权重矩阵和偏置。前馈网络的初始化权
举个例子,下面命令将创建一个二层网络。它的输入是两个元素的向量,第一层有三个神经元,第二层有一个神经元。第一层的转移函数是tan-sigmoid,输出层的转移函数是linear。输入向量的第一个元素的范围是-1到2,输入向量的第二个元素的范围是0到5,训练函数是traingd。
net=newff([-1 2; 0 5],[3,1],{"tansig","purelin"},"traingd");
这个命令建立了网络对象并且初始化了网络权重和偏置,因此网络就可以进行训练了。我们可能要多次重新初始化权重或者进行自定义的初始化。下面就是初始化的详细步骤。
在训练前馈网络之前,权重和偏置必须被初始化。初始化权重和偏置的工作用命令init来实现。这个函数接收网络对象并初始化权重和偏置后返回网络对象。下面就是网络如何初始化的:
net = init(net);
我们可以通过设定网络参数net.initFcn和net.layer{i}.initFcn这一技巧来初始化一个给定的网络。net. initFcn用来决定整个网络的初始化函数。前馈网络的缺省值为initlay,它允许每一层用单独的初始化函数。设定了net.initFcn ,那么参数net.layer{i}.initFcn 也要设定用来决定每一层的初始化函数。
对前馈网络来说,有两种不同的初始化方式经常被用到:initwb和initnw。initwb函数根据每一层自己的初始化参数(net.inputWeights{i,j}.initFcn)初始化权重矩阵和偏置。前馈网络的初始化权