导航:首页 > 编程大全 > bp神经网络训练后的权值

bp神经网络训练后的权值

发布时间:2024-09-16 03:45:06

Ⅰ BP神经网络如何把训练后的权值输入至MATLAB 建立网络 完成预测

这个就只能自己编M文件实现了,给个例子你看看

% script: main_batch.m
% 批量方式训练BP网络,实现性别识别

%% 清理
clear all
clc

%% 读入数据
% xlsfile='student.xls';
[data,label]=getdata();

%% 划分数据
[traind,trainl,testd,testl]=divide(data,label);

%% 设置参数

rng('default')
rng(0)
nTrainNum = 60; % 60个训练样本
nSampDim = 2; % 样本是2维的

%% 构造网络
net.nIn = 2; % 输入层2个神经元,分别输入身高、体重
net.nHidden = 3; % 3个隐含层节点
net.nOut = 1; % 1个输出层节点
w = 2*(rand(net.nHidden,net.nIn)-1/2); % nHidden * 3 一行代表一个隐含层节点
b = 2*(rand(net.nHidden,1)-1/2);
net.w1 = [w,b];
W = 2*(rand(net.nOut,net.nHidden)-1/2);
B = 2*(rand(net.nOut,1)-1/2);
net.w2 = [W,B];

%% 训练数据归一化
mm=mean(traind);
% 均值平移
for i=1:2
traind_s(:,i)=traind(:,i)-mm(i);
end
% 方差标准化
ml(1) = std(traind_s(:,1));
ml(2) = std(traind_s(:,2));
for i=1:2
traind_s(:,i)=traind_s(:,i)/ml(i);
end

%% 训练
SampInEx = [traind_s';ones(1,nTrainNum)];
expectedOut=trainl;

eb = 0.01; % 误差容限
eta = 0.6; % 学习率
mc = 0.8; % 动量因子
maxiter = 2000; % 最大迭代次数
iteration = 0; % 第一代

errRec = zeros(1,maxiter);
outRec = zeros(nTrainNum, maxiter);
NET=[]; % 记录
% 开始迭代
for i = 1 : maxiter
hid_input = net.w1 * SampInEx; % 隐含层的输入
hid_out = logsig(hid_input); % 隐含层的输出

ou_input1 = [hid_out;ones(1,nTrainNum)]; % 输出层的输入
ou_input2 = net.w2 * ou_input1;
out_out = logsig(ou_input2); % 输出层的输出

outRec(:,i) = out_out'; % 记录每次迭代的输出

err = expectedOut - out_out; % 误差
sse = sumsqr(err);
errRec(i) = sse; % 保存误差值
fprintf('第 %d 次迭代 误差: %f\n', i, sse);
iteration = iteration + 1;
% 判断是否收敛
if sse<=eb
break;
end

% 误差反向传播
% 隐含层与输出层之间的局部梯度
DELTA = err.*dlogsig(ou_input2,out_out);
% 输入层与隐含层之间的局部梯度
delta = net.w2(:,1:end-1)' * DELTA.*dlogsig(hid_input,hid_out);

% 权值修改量
dWEX = DELTA*ou_input1';
dwex = delta*SampInEx';

% 修改权值,如果不是第一次修改,则使用动量因子
if i == 1
net.w2 = net.w2 + eta * dWEX;
net.w1 = net.w1 + eta * dwex;
else
net.w2 = net.w2 + (1 - mc)*eta*dWEX + mc * dWEXOld;
net.w1 = net.w1 + (1 - mc)*eta*dwex + mc * dwexOld;
end
% 记录上一次的权值修改量
dWEXOld = dWEX;
dwexOld = dwex;

end

%% 测试
% 测试数据归一化
for i=1:2
testd_s(:,i)=testd(:,i)-mm(i);
end

for i=1:2
testd_s(:,i)=testd_s(:,i)/ml(i);
end

% 计算测试输出
InEx=[testd_s';ones(1,260-nTrainNum)];
hid_input = net.w1 * InEx;
hid_out = logsig(hid_input); % output of the hidden layer nodes
ou_input1 = [hid_out;ones(1,260-nTrainNum)];
ou_input2 = net.w2 * ou_input1;
out_out = logsig(ou_input2);
out_out1=out_out;

% 取整
out_out(out_out<0.5)=0;
out_out(out_out>=0.5)=1;
% 正确率
rate = sum(out_out == testl)/length(out_out);

%% 显示
% 显示训练样本
train_m = traind(trainl==1,:);
train_m=train_m';
train_f = traind(trainl==0,:);
train_f=train_f';
figure(1)
plot(train_m(1,:),train_m(2,:),'bo');
hold on;
plot(train_f(1,:),train_f(2,:),'r*');
xlabel('身高')
ylabel('体重')
title('训练样本分布')
legend('男生','女生')

figure(2)
axis on
hold on
grid
[nRow,nCol] = size(errRec);
plot(1:nCol,errRec,'LineWidth',1.5);
legend('误差平方和');
xlabel('迭代次数','FontName','Times','FontSize',10);
ylabel('误差')

fprintf(' ----------------错误分类表----------\n')
fprintf(' 编号 标签 身高 体重\n')
ind= find(out_out ~= testl);
for i=1:length(ind)
fprintf(' %4d %4d %f %f \n', ind(i), testl(ind(i)), testd(ind(i),1), testd(ind(i),2));
end

fprintf('最终迭代次数\n %d\n', iteration);
fprintf('正确率:\n %f%%\n', rate*100);

Ⅱ BP神经网络中初始权值和阈值的设定

1、首先需要了解BP神经网络是一种多层前馈网络。

Ⅲ BP神经网络中初始权值随机生成与给定确定数对最后连接权值有什么不同的影响最后获得的连接权值会不会改变

BP网络多次训练得到的结果是不同的,原因就是权值的伪随机生成.权值给定值和伪回随机数有可能产生不同影响答,最终得到的权值可能会改变.
原因是这样的,BP神经网络权值的迭代是局部寻优,往往找到的是极小值.给一个初值以后,如果恰好收敛的极小值是最小值,效果就好一些,反之,效果就差一些.当然,权值向量的分量并非独立,他们的关系非常非常复杂,我的那种说法是一个简单的比喻.
BP网络的很多优化算法就是专门针对权值的初值整定的.

Ⅳ 神经网络权值怎么确定

(1)初始时,每个权值由随机数函数产生,值的范围为[-1,1]之间
(2)运行过程中,通过BP算法求得均方误差的梯度,然后调整BP网络的权值.如:w(i,j,k+1)=w(i,j,k)+Delta(e(i,j)).

Ⅳ BP神经网络方法

人工神经网络是近几年来发展起来的新兴学科,它是一种大规模并行分布处理的非线性系统,适用解决难以用数学模型描述的系统,逼近任何非线性的特性,具有很强的自适应、自学习、联想记忆、高度容错和并行处理能力,使得神经网络理论的应用已经渗透到了各个领域。近年来,人工神经网络在水质分析和评价中的应用越来越广泛,并取得良好效果。在这些应用中,纵观应用于模式识别的神经网络,BP网络是最有效、最活跃的方法之一。

BP网络是多层前向网络的权值学习采用误差逆传播学习的一种算法(Error Back Propagation,简称BP)。在具体应用该网络时分为网络训练及网络工作两个阶段。在网络训练阶段,根据给定的训练模式,按照“模式的顺传播”→“误差逆传播”→“记忆训练”→“学习收敛”4个过程进行网络权值的训练。在网络的工作阶段,根据训练好的网络权值及给定的输入向量,按照“模式顺传播”方式求得与输入向量相对应的输出向量的解答(阎平凡,2000)。

BP算法是一种比较成熟的有指导的训练方法,是一个单向传播的多层前馈网络。它包含输入层、隐含层、输出层,如图4-4所示。

图4-4 地下水质量评价的BP神经网络模型

图4-4给出了4层地下水水质评价的BP神经网络模型。同层节点之间不连接。输入信号从输入层节点,依次传过各隐含层节点,然后传到输出层节点,如果在输出层得不到期望输出,则转入反向传播,将误差信号沿原来通路返回,通过学习来修改各层神经元的权值,使误差信号最小。每一层节点的输出只影响下一层节点的输入。每个节点都对应着一个作用函数(f)和阈值(a),BP网络的基本处理单元量为非线性输入-输出的关系,输入层节点阈值为0,且f(x)=x;而隐含层和输出层的作用函数为非线性的Sigmoid型(它是连续可微的)函数,其表达式为

f(x)=1/(1+e-x) (4-55)

设有L个学习样本(Xk,Ok)(k=1,2,…,l),其中Xk为输入,Ok为期望输出,Xk经网络传播后得到的实际输出为Yk,则Yk与要求的期望输出Ok之间的均方误差为

区域地下水功能可持续性评价理论与方法研究

式中:M为输出层单元数;Yk,p为第k样本对第p特性分量的实际输出;Ok,p为第k样本对第p特性分量的期望输出。

样本的总误差为

区域地下水功能可持续性评价理论与方法研究

由梯度下降法修改网络的权值,使得E取得最小值,学习样本对Wij的修正为

区域地下水功能可持续性评价理论与方法研究

式中:η为学习速率,可取0到1间的数值。

所有学习样本对权值Wij的修正为

区域地下水功能可持续性评价理论与方法研究

通常为增加学习过程的稳定性,用下式对Wij再进行修正:

区域地下水功能可持续性评价理论与方法研究

式中:β为充量常量;Wij(t)为BP网络第t次迭代循环训练后的连接权值;Wij(t-1)为BP网络第t-1次迭代循环训练后的连接权值。

在BP网络学习的过程中,先调整输出层与隐含层之间的连接权值,然后调整中间隐含层间的连接权值,最后调整隐含层与输入层之间的连接权值。实现BP网络训练学习程序流程,如图4-5所示(倪深海等,2000)。

图4-5 BP神经网络模型程序框图

若将水质评价中的评价标准作为样本输入,评价级别作为网络输出,BP网络通过不断学习,归纳出评价标准与评价级别间复杂的内在对应关系,即可进行水质综合评价。

BP网络对地下水质量综合评价,其评价方法不需要过多的数理统计知识,也不需要对水质量监测数据进行复杂的预处理,操作简便易行,评价结果切合实际。由于人工神经网络方法具有高度民主的非线性函数映射功能,使得地下水水质评价结果较准确(袁曾任,1999)。

BP网络可以任意逼近任何连续函数,但是它主要存在如下缺点:①从数学上看,它可归结为一非线性的梯度优化问题,因此不可避免地存在局部极小问题;②学习算法的收敛速度慢,通常需要上千次或更多。

神经网络具有学习、联想和容错功能,是地下水水质评价工作方法的改进,如何在现行的神经网络中进一步吸取模糊和灰色理论的某些优点,建立更适合水质评价的神经网络模型,使该模型既具有方法的先进性又具有现实的可行性,将是我们今后研究和探讨的问题。

Ⅵ BP神经网络连接权值如何确定

确认方法:
统计学认为,在统计中计算平均数等指标时,对各个变量版值具有权衡轻重作用的数权值就称为权数。
例子:求下列数串的平均数
3、4、3、3、3、2、4、4、3、3、
一般求法为(3+4+3+3+3+2+4+4+3+3)/10=3.2
加权求法为(6*3+3*4+2)/10=3.2
其中3出现6次,4出现3次,2出现1次.6、3、1就叫权数。这种方法叫加权法。
一般说的平均数,就是把所有的数加起来,再除以这些数的总个数。表示为:
(p1+p2+p3+…..+pn)/n;
但有的数据记录中有一些相同的数据,在计算的时候,那一个数有几个相同数,就把这个数乘上几,这个几,就叫权,加权,就是乘上几后再加。平均数还是要除以总个数。
还是以上面的各个数为例:
它们每个数都有一些相同数,表示为:k1,k2,k3…….kn;
加权平均的公式是:(k1p1+k2p2+k3p3+……knpn)/(k1+k2+k3+…..kn)

Ⅶ 急急急!!bp神经网络权值和阈值的变化问题 以及神经网络c++编程问题~~

变化是肯定的,否则不会收敛。建议神经网络收敛后,把所有权值和域值保存在一个文件中。下次使用时再把这些值提到网络中,不需要每次都学习一遍。如果需要帮助,你可以把程序发到:85825615@qq.com

阅读全文

与bp神经网络训练后的权值相关的资料

热点内容
ps入门必备文件 浏览:348
以前的相亲网站怎么没有了 浏览:15
苹果6耳机听歌有滋滋声 浏览:768
怎么彻底删除linux文件 浏览:379
编程中字体的颜色是什么意思 浏览:534
网站关键词多少个字符 浏览:917
汇川am系列用什么编程 浏览:41
笔记本win10我的电脑在哪里打开摄像头 浏览:827
医院单位基本工资去哪个app查询 浏览:18
css源码应该用什么文件 浏览:915
编程ts是什么意思呢 浏览:509
c盘cad占用空间的文件 浏览:89
不锈钢大小头模具如何编程 浏览:972
什么格式的配置文件比较主流 浏览:984
增加目录word 浏览:5
提取不相邻两列数据如何做图表 浏览:45
r9s支持的网络制式 浏览:633
什么是提交事务的编程 浏览:237
win10打字卡住 浏览:774
linux普通用户关机 浏览:114

友情链接