24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1942  |  回复: 3

孙家正

新虫 (初入文坛)

[交流] 《MATLAB智能算法30个案例》中,遗传算法优化BP神经网络部分运行出错已有3人参与

运行时出现:
错误使用 network/subsasgn>network_subsasgn (line 553)
无法从 double 转换为 cell。

出错 network/subsasgn (line 13)
net = network_subsasgn(net,subscripts,v,netname);

出错 Bpfun (line 33)
net.b(1)=reshape(B1,hiddennum,1);

源代码:function err=Bpfun(x,P,T,hiddennum,P_test,T_test)
%%训练与测试BP网络
%%输入
%x:一个个体的初始权值和阈值
%P:训练样本输入
%T:训练样本输出
%hiddennum:隐含层神经元数
%P_test:测试样本输入
%T_test:测试样本期望输出
%%输出
%err:预测样本的预测误差的范数
inputnum=size(P,1);                  %输入层神经元的个数
outputnum=size(T,1);                 %输出层神经元的个数
%新建BP网络
net=newff(P,T,[hiddennum,outputnum],{'tansig','logsig'},'trainlm');
%%设置网络参数;训练次数为1000,训练目标为0.011,学习速率为0.1
net.trainParam.epochs=1000;
net.trainParam.goal=0.01;
Lp.lr=0.1;
%BP神经网络初始权值和阈值
w1num=inputnum*hiddennum;           %输入层到隐含层的权值个数
w2num=outputnum*hiddennum;          %隐含层到输出层的权值个数
w1=x(1:w1num);                       %初始输入层到隐含层的权值
B1=x(w1num+1:w1num+hiddennum);      %隐含层神经元阈值
w2=x(w1num+hiddennum+1:w1num+hiddennum+w2num);                     %初始隐含层到输入层的权值
B2=x(w1num+hiddennum+w2num+1:w1num+hiddennum+w2num+outputnum);     %输出层阈值   
net.iw{1,1}=reshape(w1,hiddennum,inputnum);
net.lw{2,1}=reshape(w2,outputnum,hiddennum);
net.b(1)=reshape(B1,hiddennum,1);
net.b(2)=reshape(B2,outputnum,1);
%训练网络
net=train(net,P,T);
%测试网络
Y=sim(net,P_test);
err=norm(Y-T_test)
求各位大神帮帮小弟,感激不尽
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

怀梦星空攀

新虫 (职业作家)


小木虫: 金币+0.5, 给个红包,谢谢回帖
楼主,你的第二个错误是怎么解决的,我也遇到这个问题了,求教

发自小木虫Android客户端
2楼2018-03-07 22:53:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

matlababaqus

新虫 (初入文坛)

3楼2018-03-11 10:14:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dy1029

新虫 (正式写手)


小木虫: 金币+0.5, 给个红包,谢谢回帖
引用回帖:
3楼: Originally posted by matlababaqus at 2018-03-11 10:14:06
我帮你看下

我也出现了这个问题,求助
4楼2018-08-02 00:35:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 孙家正 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见