训练集样本的不同肯定会影响到权值的变化。你要训练的数据 就是你希望一个系统输入一些数据时 能固定得到的那些数据,训练集要是随即那就没意义了,神经网络权值初始值是可以随即的,但随着训练继续,权值将趋于稳定,这样才能达到神经网络的效果。
训练过程权值明显会变化,只是如果已经收敛到指定精度后,也就是训练停止了后,权值阈值是不会变的。这些权值和神经网络结构组成一个模型,然后测试就可以直接用这个模型进行测试。
bp神经网络是很普通的一种NN,有直接的算法和公式,对照一下应该就知道了吧,剩下的错误应该就是编程问题了,看看你的循环结构有没有出现问题。
% 读入训练数据和测试数据
Input = [];
Output = [];
str = {'Test','Check'};
Data = textread([str{1},'txt']);
% 读训练数据
Input = Data(:,1:end-1);
% 取数据表的前五列(主从成分)
Output = Data(:,end);
% 取数据表的最后一列(输出值)
Data = textread([str{2},'txt']);
% 读测试数据
CheckIn = Data(:,1:end-1);
% 取数据表的前五列(主从成分)
CheckOut = Data(:,end);
% 取数据表的最后一列(输出值)
Input = Input';
Output = Output';
CheckIn = CheckIn';
CheckOut = CheckOut';
% 矩阵赚置
[Input,minp,maxp,Output,mint,maxt] = premnmx(Input,Output);
net1=newff(minmax(pX),[16,1],{'tansig','purelin'},'trainlm');
这个是激活函数的语句,但是一般不需要修改。
BP神经网络是计算机自主学习的一个过程,程序员要做的就是确定隐含层神经元的数量以及训练精度,训练步数以及学习速率等参数。
隐含层神经元数量的公式:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)