APP下载

LabVIEW中BP神经网络的实现及应用

2009-03-02廖慎勤彭良玉

现代电子技术 2009年4期
关键词:图形化BP神经网络

廖慎勤 彭良玉 江 勇

摘 要:BP(Back Propagation)神经网络是一种具有广泛应用性的前馈神经网络,LabVIEW是一种图形化编程语言,其为虚拟仪器设计者提供了一个便捷、轻松的设计环境,被工业界及研究实验室广泛接受。介绍了两种在LabVIEW实现BP神经网络计算的方法,即Matlab Script节点和图形编程,Matlab Script节点采用在LabVIEW中直接导入Matlab程序运行,而图形编程采用图形编程的方式实现算法,并分别以神经网络在函数逼近和某设备分类中的应用说明了各自的实现流程,实验结果精确且形象直观,充分体现了LabVIEW作为图形化编程语言的特点。

关键词:BP神经网络;LabVIEW;图形化;Matlab

中图分类号:TP183 文献标识码:B 文章编号:1004-373X(2009)04-072-04

BP Neural Network′s Realization and Application in LabVIEW

LIAO Shenqin1,PENG Liangyu1,JIANG Yong2

(1.College of Phycics and Information,Hunan Normal University,Changsha,410081,China;

2.Sunplus Prof-tek Technology (Shenzhen) Co.Ltd.,Shenzhen,518000,China)

Abstract:BP neural network is a widely used feedforward neural network,LabVIEW is a graphical programming language,which provids a convenient and easy design environment,so it′s normally accepted by industrial sector and research liboratory.Two calculation methods of realizing BP neural network in LabVIEW are introduced,those are Matlab Script node and graphical programming,Matlab Script node imports the Matlab program and running it,graphical programming realizes the algorithm with the method of graphical programming,and takes the apply of BP neural network in function approach and distinguishing between categories as examples to explain the realization process of the two methods,and the results are precise and intuitive,fully reflect the feathures of LabVIEW as a graphical programming language.

Keywords:BP neural network;LabVIEW;graphical;Matlab

0 引 言

LabVIEW是美国 NI公司开发的高效图形化虚拟仪器开发平台,它的图形化编程具有直观、简便、快速、易于开发和维护等优点,在虚拟仪器设计和测控系统开发等相关领域得到了日益广泛的应用,它无需任何文本程序代码,而是把复杂、繁琐的语言编程简化成图形,用线条把各种图形连接起来。BP神经网络属于前馈神经网络,它广泛应用函数逼近、模式识别、分类和数据压缩等领域,若将神经网络与虚拟仪器有机结合,则可以为提高虚拟仪器测控系统的性能提供重要的依据。

1 BP神经网络学习算法

BP模型是一种应用最广泛的多层前向拓扑结构,以三层BP神经网络作为理论依据进行编程,它由输入层、隐层和输出层构成。设输入层神经元个数为I,隐层神经元个数为J,输出层神经元个数为K,学习样本有N个(X,Y)向量,表示为:输入向量X{x1,x2,…,xI},输出向量Y{y1,y2,…,yK},理想输出向量为T{t1,t2,…,tK}。

(1) 输入层节点i,其输出等于xi(i=1,2,…,I),将控制变量值传输到隐含层,则隐层第jЦ錾窬元的输入:

Иsj=∑Ii=1wjixi-θj=∑I+1i=1wjixi, j=1,2,…,J(1)И

其中:wji是隐层第j个神经元到输入层第i个神经元的连接权值。

(2) 隐层第jЦ錾窬元的输出:

Иhj=g(sj)=21+e-2sj-1, j=1,2,…,J(2)И

(3) 神经网络输出层,第kЦ錾窬元的输入为:

Иrk=∑Jj=1vkjhj, k=1,2,…,K(3)И

其中:vkj是输出层第k个神经元到隐层第j个神经元的连接权值。

(4)神经网络输出层,第kЦ錾窬元的输出为:

Иyk=g(rk)=11+e-rk, k=1,2,…,K(4)И

(5) 设定网络误差函数E:

ИE=1N∑Nk=1EkИ

其中:

ИEk=12∑j(tj-yj)2(5)И

(6) 输出层到隐层的连接权值调整量Еvkj:

ИЕvkj=礒祐kj=(tk-yk)hj,

j=1,2,…,J;k=1,2,…,K(6)И

(7) 隐层到输入层的连接权值调整量Еwji:

Еwji=礒祑ji=

∑Kk=1(tk-yk)•vkj[hj(1-hj)]xi,

j=1,2,…,J;i=1,2,…,I(7)

2 用LabVIEW实现BP神经网络的两种方法

用LabVIEW实现BP神经网络的两种方法为:

(1) 由于 Matlab具有强大的数学运算能力以及在测控领域的广泛应用。在 LabVIEW中提供了Matlab Script节点,用户可在节点中编辑Matlab程序,并在LabVIEW中运行;也可以在LabVIEW程序运行时直接调用已经存在的 Matlab程序,如使用节点则必须在系统中安装 Matlab5以上版本,在写入 Matlab节点前要将程序先调试通过,并确保其中变量的数据类型匹配。

(2) 由于LabVIEW的图形程序是独立于运行平台的,而且是一种数据驱动的语言,可以方便地实现算法且易修改,结合其 SubVI技术可以增加程序的利用率,因此可以采用图形编程的方法实现前向网络的算法。

2.1 利用Matlab Script节点实现

在此以对一个非线性函数的逼近作为例子来说明实现流程,其中输入矢量p=[-1∶0.05∶1];目标矢量t=sin(2*pi*p)+0.1randn(size(p))。利用Matlab Script节点实现BP 算法的过程如下:

(1) 新建一个LabVIEW vi,在框图程序中添加Matlab Script 节点。

(2) 在节点内添加Matlab的动量BP算法实现代码,并分别在节点左右边框分别添加对应的输入/输出参数,如图 1 所示。

(3) 在vi的前面板添加相应的控件,设置输入参数,连接输出控件。执行程序, 结果如图 2、图3 所示。

图1 Matlab Script实现改进的BP算法

图2 误差曲线图

图3 逼近曲线图

此方法能够直接利用Matlab强大的神经网络工具箱,程序运行时会自动调用系统中已安装的Matlab进行计算,不用进行复杂的编程,开发效率很高。

2.2 利用图形编程实现

LabVIEW是美国NI公司推出的基于图形化编程的虚拟仪器软件开发工具,它无需任何文本程序代码,而是把复杂、繁琐的语言编程简化成图形,用线条把各种图形连接起来。在此以一个设备状态分类器设计作为例子来说明实现流程输入,该设备有8个输入分量,即温度、湿度等外部条件;而输出状态则有3种,分别为正常、偏小、偏大。这里采用12个训练样本,每个样本有8个分量,3类输出分别编码为(0 1),(1 0),(1 1),以下即为输入样本及标准输出数据(见图4、图5)。

BP神经网络隐层输入在LabVIEW中的实现。根据BP学习算法中式(1)编写相应的程序。其中x为输入样本;w为隐层输入权值,主要应用 LabVIEW中的函数-数学-线性代数-矩阵A×B实现权值与输入样本的矩阵相乘,并通过 For循环计算得到 BP神经网络的隐层输入 H (见图6)。

(2)BP神经网络隐层输出H的图形化程序。根据算法中的式(2)编写,由于在很多测试实践中参数间的关系是非线性的,这里主要应用Sigmoid型tansig函数作为隐层的传递函数,主要应用程序面板中函数-数学-数值及基本与特殊函数等数学控件实现(见图7)。

图4 输入样本

图5 标准输出

图6 隐层输入的程序框图

图7 隐层输出的程序框图

(3)BP神经网络输出层的输入及输出程序框图与隐层的类似,分别根据式(3)、式(4)编程即可实现,在此不再重复。

(4) 网络误差函数E的图形化程序。根据算法中式(5)编写程序,其中:t为理想输出,y为网络输出。其中应用函数-数学-基本与特殊函数中的指数函数控件来实现 (见图8)。

(5) BP神经网络各参数调整量的图形化程序根据上述学习算法中的式(6)和式(7),其中:x为网络输入样本;y,t分别为网络实际输出和期望输出;h为隐层输出;v为隐层输出权值。通过调用 LabVIEW软件中数学计算控件,经过一系列数学计算,分别得到网络隐层输出权值调整量Δv以及隐层输入权值调整量Δw,如图9、图10所示。

图8 网络误差函数程序框图

图9 Δv的图形化程序

图10 Δw的图形化程序

(6) 完整的学习算法的图形化程序。将以上各个程序模块综合在一起,可以得到完整的学习算法实现程序,如图 11所示。

图11 完整的图形化程序

通过设定网络的输入样本x、输出期望t、 隐层输入权值w,输出v的初始值,经过一系列的矩阵运算,获得调整后隐层权值w,v参数值。

运行结果如图12所示,由图可以非常直观看出,网络输出与网络理想输出相当接近,说明网络训练的结果是满意的。

3 结 语

在利用LabVIEW实现BP神经网络的计算,方法一通过直接调用Matlab程序,简单易行,只是事先需要装有Matlab5.0以上的版本。方法二运用图形化编程对BP神经网络进行仿真,具有形象、直观、便于使用和理解的优于传统文本编程语言的特点。

图12 运行结果

参 考 文 献

[1]Allerhand A,Galuska A D.Implementation of LabVIEW forComputer Controlled Experiments in General Chemistry Laboratory Instruction [J].Chem.Educator,2000,5(2):71-76.

[2]飞思科技产品研发中心.神经网络理论与Matlab7实现[M].北京:电子工业出版社,2005.

[3]常晓丽.基于Matlab的BP神经网络的设计[J].机械工程与自动化,2006(4):36-37.

[4]郭红梅,于佐军.LabVIEW与Matlab混合编程的过程控制应用 [J].控制工程,2007(14):131-132.

[5]蔡清华,杨世锡,罗锡梁.基于虚拟仪器编程的BP神经网络学习算法仿真 [J].现代机械,2006(2):6-8.

[6]周丽霞,熊瑞平,杨荣松.LabVIEW在BP神经网络故障诊断系统中的应用 [J].机床与液压,2007,35(4):215-216.

[7]昝涛,王民,费仁元,等.LabVIEW中人工神经网络计算的实现及应用[J].微计算机信息,2006,22(6):122-124.

[8]粟钧,吴拓.基于虚拟仪器编程的BP神经网络算法学习算法仿真[J].广东轻工职业学院学报,2005,4(1):26-28.

[9]殷莹.BP网络在设备故障诊断中的应用与实现 [J].微计算机信息,2007,23(10):31-34.

[10]张雅丽,王宝光,赵海文,等.虚拟仪器在故障诊断中的应用 [J].机床与液压,2005(1):124-126.

[11] 曾祥学,罗卫华,张斌.基于LabWindows/CVI的人工神经网络BP算法的实现.现代电子技术,2005(2):21-23.

作者简介 廖慎勤 女,1984年出生,湖南醴陵人,湖南师范大学硕士研究生。主要研究方向为模拟电路故障诊断。

彭良玉 女,1965年出生,湖南湘乡人,湖南师范大学教授,硕士生导师,北京航空航天大学博士后。主要研究方向为源滤波器的设计,模拟电路故障诊断,已发表论文80余篇。

江 勇 男,1985年出生,湖南醴陵人,凌阳科技公司通信部工程师。主要研究方向为通信终端设备开发,已发表论文1篇。

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。

猜你喜欢

图形化BP神经网络
RRB电加热器图形化试验程序的设计与实现
LKJ自动化测试系统图形化技术研究
就bp神经网络银行选址模型的相关研究
基于DEA—GA—BP的建设工程评标方法研究
复杂背景下的手势识别方法
BP神经网络在软件质量评价中的应用研究 
BP神经网络算法在数值预报产品释用中的应用
运用图形化听写式复习,构建高效地理课堂
图形化地区电网无功优化软件开发与应用
图形化通用化现地嵌入式计算机通讯软件研发及应用