📄 bpnet.m
字号:
%自己设计的BP神经网络集成。
%输入的是 p-作为训练值的输入
% t-也是网络的期望输出结果
% ynum-设定隐层点数 一般取3~20;
% maxnum-如果训练一直达不到期望误差之内,那么BP迭代的次数 一般设为5000
% ex-期望误差,也就是训练一小于这个误差后结束迭代 一般设为0.01
% lr-学习率 一般设为0.01
% pp-使用p-t虚拟蓝好的BP网络来分类计算的向量,也就是嵌入二值水印的大组系数进行训练然后得到二值序列
% ww-输出结果
% 注明:ynum,maxnum,ex,lr均是一个值;而p,t,pp,ww均可以为向量
% 比如p是m*n的n维行向量,t那么为m*k的k维行向量,pp为o*i的i维行向量,ww为o* k的k维行向量
%p,t作为网络训练输入,pp作为训练好的网络输入计算,最后的ww作为pp经过训练好的BP训练后的输出
function ww=bpnet(p,t,ynum,maxnum,ex,lr,pp)
plot(p,t,'+');
title('训练向量');
xlabel('P');
ylabel('t');
[w1,b1,w2,b2]=initff(p,ynum,'tansig',t,'purelin'); %初始化含一个隐层的BP网络
zhen=25; %每迭代多少次更新显示
biglr=1.1; %学习慢时学习率(用于跳出平坦区)
litlr=0.7; %学习快时学习率(梯度下降过快时)
a=0.7 %动量项a大小(△W(t)=lr*X*ん+a*△W(t-1))
tp=[zhen maxnum ex lr biglr litlr a 1.04]; %trainbpx
[w1,b1,w2,b2,ep,tr]=trainbpx(w1,b1,'tansig',w2,b2,'purelin',p,t,tp);
ww=simuff(pp,w1,b1,'tansig',w2,b2,'purelin');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -