matlab for 1 3,书中的神经网络串行方式训练中的代码for m=1:3是什么含义

初学者请多指教,想用书中的例子做128神经元116个样本的训练,但在训练环节出错提示矩阵出错,数据和代码在附件。

书中的代码,

还有这里的 j 和 i 是什么含义

for i=1:length(net1_out)+1

for j=1:1

ipu1(j)=err(j);     % 局部梯度

% 输出层与隐含层之间的调整量

delta1(i,j) = ita.*ipu1(j).*net2_int(i);

end

end

%% 训练

for x=1:M                          % 迭代

ind=randi(60);                 % 从1-60中选一个随机数

in=[traind_s(ind,:),1];        % 输入层输出

net1_in=in*net.w1;             % 隐含层输入

net1_out=logsig(net1_in);      % 隐含层输出

net2_int = [net1_out,1];       % 下一次输入

net2_in = net2_int*net.w2;     % 输出层输入

net2_out = logsig(net2_in);    % 输出层输出

err=trainl(ind)-net2_out;      % 误差

errt(x)=1/2*sqrt(sum(err.^2)); % 误差平方

fprintf('第 %d 次循环, 第%d个学生, 误差  %f\n',x,ind, errt(x));

% 调整权值

for i=1:length(net1_out)+1

for j=1:1

ipu1(j)=err(j);     % 局部梯度

% 输出层与隐含层之间的调整量

delta1(i,j) = ita.*ipu1(j).*net2_int(i);

end

end

for m=1:3

for i=1:length(net1_out)

% 局部梯度

ipu2(i)=net1_out(i).*(1-net1_out(i)).*sum(ipu1.*net.w2);

% 输入层和隐含层之间的调整量

delta2(m,i)= ita.*in(m).*ipu2(i);

end

end

% 调整权值

if x==1

net.w1 = net.w1+delta2;

net.w2 = net.w2+delta1;

else

net.w1 = net.w1+delta2*(1-alpha) + alpha*old_delta2;

net.w2 = net.w2+delta1*(1-alpha) + alpha*old_delta1;

end

old_delta1=delta1;

old_delta2=delta2;

end

5724a1379ceb16a514510c7aa4f77048.gif

2018-4-17 19:03 上传

点击文件名下载附件

120.77 KB, 下载次数: 4

f5c3d56501a3d0261ce0cb81cbf824a7.gif

2018-4-17 19:03 上传

点击文件名下载附件

1.39 KB, 下载次数: 4

f5c3d56501a3d0261ce0cb81cbf824a7.gif

2018-4-17 19:03 上传

点击文件名下载附件

5.42 KB, 下载次数: 4

f5c3d56501a3d0261ce0cb81cbf824a7.gif

2018-4-17 19:03 上传

点击文件名下载附件

6.22 KB, 下载次数: 4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值