2016年08月13日
神经网络模型有n个输入,中间有隐层的m个神经元,再有相应的输出。 训练无非就是得到权重。因为根据神经网络模型,只有权重是未知的。一旦权重获知,就有非线性处理能力。举个简单的例子(这里i的上限是神经元个数,例如上题中的20): y(i)=w(i)*x(i) x是输入,w是权重,y是输出。训练时,因为知道x和y,而去预估w(注意w有20个),因此可以任选(实际上是一个枚举排列过程)y和x中的20个,得到一组w,再任选20个,再得到一组w,取这两组的合适值(什么叫合适值,你自己理解,比如说修正后的w对两组数据的有效性都综合更高而不是偏向于其中一组,所以模型可以选择训练方法和参数),如此迭代一直下去,直到获得的20个w值对所有训练数据总体mse最小。 newff函数 1、p是输入矩阵,列向量就是一个输入样本； 2、t的每个列向量都是一个输出样本； 3、si是隐含层节点数。 4、blf是神经网络的学习函数,用于训练阶段权值和阈值的调整； 5、pf是性能函数,用来衡量训练误差； 6、ipf是输入层可以使用的数据处理函数,比如常用的归一化函数mapminmax,opf是输出层可以使用的数据处理函数,比如反归一化函数mapminmax； 7、 ddf函数用于训练阶段数据的划分,现在版本的函数将训练数据分成3部分:训练数据、验证数据和测试数据,划分方式是随机划分,比例依次为70%、15%、15%； 8、调用函数时,p,t,s这些参数不能缺省,tf,btf、blf,pf,ipf,opf,ddf这些可以缺省,当然自己可以指定合适的参数。 matlab神经网络工具箱要求样本数据矩阵的每列是一个样本,对应于输出矩阵的一列 我现在在用这个网络 但是输出层好想不对啊 net=newff(p,t,[20,4])； 这样建出来的网络输出层默认是1 隐含层为2层 神经元数分别为20 4 我想让输出层为4个神经元 怎么设置？ 具体可以看看 .comview 高版本的newff函数会根据输入矩阵t自动确定输出层的神经元节点数,如果你的数据t是4*x的矩阵,x是样本个数,那么输出层节点数应该就是4个。