爱问知识人 爱问教育 医院库

你好,我做的bp网络中,前2行的数据输入与第一个输出对应,后2行的和第2个对应,这个应该怎么写程序呢?

首页

你好,我做的bp网络中,前2行的数据输入与第一个输出对应,后2行的和第2个对应,这个应该怎么写程序呢?


        

提交回答

全部答案

    2018-11-19 01:22:43
  •   求一用matlab编的程序 
    P=[。。。];输入T=[。。。];输出
    % 创建一个新的前向神经网络
    net_1=newff(minmax(P),[10,1],{'tansig','purelin'},'traingdm')
    % 当前输入层权值和阈值
    inputWeights=net_1。
      IW{1,1}
    inputbias=net_1。b{1}
    % 当前网络层权值和阈值
    layerWeights=net_1。LW{2,1}
    layerbias=net_1。
      b{2}
    % 设置训练参数
    net_1。trainParam。show = 50;
    net_1。trainParam。lr = 0。05;
    net_1。trainParam。
      mc = 0。9;
    net_1。trainParam。epochs = 10000;
    net_1。trainParam。goal = 1e-3;
    % 调用 TRAINGDM 算法训练 BP 网络
    [net_1,tr]=train(net_1,P,T);
    % 对 BP 网络进行仿真
    A = sim(net_1,P);
    % 计算仿真误差
    E = T - A;
    MSE=mse(E)
    x=[。
      。。]';%测试
    sim(net_1,x)
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    不可能啊 我2009
    28
    clear;
    %用bp网络,首先对数据分组:
    %假设从当年起后3年的需水量和前十年有关。
      即第十一,十二,十三年的需水量由第一年到第十年确定,第十二,十三,十四年的需水量由第二年到第十一年确定。。。
    %则:输入量
    p=[6235 6897 7012 7023 7289 7896 7589 7986 7998 8012;
    6897 7012 7023 7289 7896 7589 7986 7998 8012 8123 ;
    7012 7023 7289 7896 7589 7986 7998 8012 8123 8456;
    7023 7289 7896 7589 7986 7998 8012 8123 8456 8498;
    7289 7896 7589 7986 7998 8012 8123 8456 8498 8654;
    7896 7589 7986 7998 8012 8123 8456 8498 8654 8723;
    7589 7986 7998 8012 8123 8456 8498 8654 8723 8923;
    7986 7998 8012 8123 8456 8498 8654 8723 8923 10093;
    7998 8012 8123 8456 8498 8654 8723 8923 10093 11626;
    8012 8123 8456 8498 8654 8723 8923 10093 11626 11536;
    8123 8456 8498 8654 8723 8923 10093 11626 11536 11276;
    8456 8498 8654 8723 8923 10093 11626 11536 11276 9606;
    8498 8654 8723 8923 10093 11626 11536 11276 9606 8769 ;
    8654 8723 8923 10093 11626 11536 11276 9606 8769 8068;
    8723 8923 10093 11626 11536 11276 9606 8769 8068 7541;
    8923 10093 11626 11536 11276 9606 8769 8068 7541 9717];
    %对应输出量:
    t=[8123 8456 8498;
    8456 8498 8654;
    8498 8654 8723;
    8654 8723 8923;
    8723 8923 10093;
    8923 10093 11626;
    10093 11626 11536;
    11626 11536 11276 ;
    11536 11276 9606;
    11276 9606 8769;
    9606 8769 8068;
    8769 8068 7541;
    8068 7541 9717;
    7541 9717 8886;
    9717 8886 9287;
    8886 9287 9710;];
    %对数据进行归一化(即缩放到0,1之间),P,T分别为归一化后的输入量和输出量
    for i=1:16
    P(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:)));
    end
    for i=1:16
    T(i,:)=(t(i,:)-min(t(i,:)))/(max(t(i,:))-min(t(i,:)));
    end
    %选取前14组数据训练网络,第15,16组用来测试训练好的网络。
      
    PP=[P(1,:);P(2,:);P(3,:); P(4,:);P(5,:);P(6,:);P(7,:);
    P(8,:);P(9,:);P(10,:); P(11,:);P(12,:);P(13,:);P(14,:)];
    Ptest=[P(15,:);P(16,:)]';
    TT=[T(1,:);T(2,:);T(3,:); T(4,:);T(5,:);T(6,:);T(7,:);
    T(8,:);T(9,:);T(10,:); T(11,:);T(12,:);T(13,:);T(14,:)];
    Ttest=[T(15,:);T(16,:)]'
    PP=PP'
    TT=TT'
    %s是隐层单元数,用for循环试试3种隐层
    s=[10,15,18];
    res=1:3;
    for i=1:3
    net=newff(minmax(PP),[s(i),3],{'tansig','logsig'},'trainlm');
    net。
      trainParam。epochs=500;
    net。trainParam。goal=0。0001;
    net=train(net,PP,TT);
    y=sim(net,PP);
    error=y-TT;
    res(i)=norm(error);
    end
    %用Ptest测试训练好的网络效果。
      
    Y=sim(net,Ptest)

    Ttest =
    1。0000 0
    0 0。4867
    0。4826 1。0000
    Y =
    0。
      0000 0。0000
    0。9974 0。9990
    0。9985 1。0000
    你看看这个别人的例题。

    荒***

    2018-11-19 01:22:43

类似问题

换一换

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 175-194
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):