matlab训练BP神经网络,nntool中如何设置,权值,激活函数的修改等问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab训练BP神经网络,nntool中如何设置,权值,激活函数的修改等问题相关的知识,希望对你有一定的参考价值。

看到别人分享的代码:
clear;
aa=xlsread('data001.xls');
pd=aa(1:325,:)';
[pn,minp,maxp]=premnmx(pd);
pr=[pn(:,1:321);pn(:,2:322);pn(:,3:323);pn(:,4:324);pn(:,5:325)];
p=pr(:,1:300);
t=pn(5,6:305);
pX=pr(:,301:320);
pY=pn(5,306:325);
X=p;
T=t;
[R,N]=size(X);
[S2,N]=size(T);S1=16;
net1=newff(minmax(pX),[16,1],'tansig','purelin','trainlm');
>> net1.trainParam.show=1;
net1.trainParam.epochs=2000;
net1.trainParam.goal=0.001;
net1.trainParam.max_fail=5;
net1=init(net1);
[net1,tr,Y,E]=train(net1,pX,pY);
s=sim(net1,pX);

er=pY-s;

figure
plot(pY,'b');
hold on
plot(s,'r*');
title('神经网络训练图');
从哪儿去设置权值,nntool中input的value如何设置,谢谢各位,论文急用,马上要提交初稿了

参考技术A

net1=newff(minmax(pX),[16,1],'tansig','purelin','trainlm');

 

这个是激活函数的语句,但是一般不需要修改。

BP神经网络是计算机自主学习的一个过程,程序员要做的就是确定隐含层神经元的数量以及训练精度,训练步数以及学习速率等参数。

隐含层神经元数量的公式:

 

   

本回答被提问者采纳

Matlab-bp神经网络

一、工作流程

  1、加载数据,产生训练集与测试集(验证集)

    首先加载样本,其中样本的输入叫做:特征(变量),其输出值叫做:理想值,将样本分为训练样本(学习所用)和测试样本(效果测试仿真所用)

    需要注意的是样本矩阵的列代表的是样本的个数,行代表每个样本的数据

    代码如下:

    load spectra_data.mat    

    %% 随机产生训练集测试集序列
    temp = randperm(size(attributes,2));
    %产生训练集样本
    P_train = attributes(:,temp(1:80));%选取前80个作为训练集样本
    T_train = strength(:,temp(1:80));
    %产生测试集样本
    P_test = attributes(:,temp(81:end));%将80之后的样本作为测试集样本
    T_test = strength(:,temp(81:end));

    %保存测试集的样本个数

    N = size(P_test,2);

 

  2、数据归一化处理

    由于输入数据的单位不一样,所以有些数据的范围可能比较大,导致的结果可能是神经网络收敛慢、训练时间长

    代码如下:

    %% 数据归一化处理

    %训练集归一化

    [p_train,ps_input] = mapminmax(P_train,0,1);
    [t_train,ps_output] = mapminmax(T_train,0,1);
    %测试集输入数据归一化
    p_test = mapminmax(‘apply‘,P_test,ps_input);  %将训练集的归一化的“标准”应用在测试集的归一化上

 

  3、神经网络的创建、神经网络的参数调整、神经网络的训练、神经网络的仿真、仿真结果的反归一化

    代码如下:

 

    %% BP神经网络创建、训练及仿真测试
    %创建网络
    net = newff(p_train,t_train,9);%创建一个具有9个神经元的bp神经网络
    %设置训练参数
    net.trainParam.epochs = 1000;%最多循环次数为1000次
    net.trainParam.goal = 1e-3;%目标误差小于。。。
    net.trainParam.lr = 0.01;%学习率设定为0.01
    %训练网络
    net = train(net,p_train,t_train);
    %仿真测试
    t_sim = sim(net,p_test);
    %数据反归一化
    T_sim = mapminmax(‘reverse‘,t_sim,ps_output);

 

  4、神经网络的性能评价(相对误差计算、决定系数计算)

    代码如下:    

    %% 性能评价
    %相对误差
    error = abs(T_sim - T_test)./T_test;
    %决定系数
    R2 = (N * sum(T_sim .* T_test) - sum(T_sim) * sum(T_test))^2 / ((N * sum((T_sim).^2) - (sum(T_sim))^2) * (N * sum((T_test).^2) -     (sum(T_test))^2)); 

  5、结果对比、绘图处理

    代码如下:    

    %% 结果对比
    result = [T_test‘ T_sim‘ error‘]

 

    %% 绘图
    figure
    plot(1:N,T_test,‘b:*‘,1:N,T_sim,‘r-o‘)
    legend(‘标签‘,‘标签‘)
    xlabel(‘标签‘)
    ylabel(‘标签‘)
    string = {‘标题‘};
    title(string)

 

以上是关于matlab训练BP神经网络,nntool中如何设置,权值,激活函数的修改等问题的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB中训练LM算法的BP神经网络

MATLAB中BP神经网络的训练算法具体是怎么样的

matlab BP神经网络中,最后算出的MSE值应该为多少?

MATLAB中BP神经网络的训练算法具体是怎么样的

matlab中的BP神经网络

用Matlab算BP神经网络的具体算法?