需要把MATLAB中的BP神经网络工具箱与自己的一个软件项目结合

这个就是C++与matlab混合编程。但是神经网络工具箱比较特别,它反盗用比较严厉。采用传统的混编方式,可以调用matlab自己的函数,但无法成功调用神经网络工具箱。

这一点在mathwork网站上也做了说明。以C#为例,一般混编有四种方式:(1)利用Matlab自身编译器,目的是将m文件转换为c或c++的源代码。(2)利用COM或.NET组件技术。

通过MATLAB中的Deploytool工具将m文件编译成dll,然后在系统中调用。(3)利用Mideva平台。没尝试过。(4)利用MATLAB引擎技术。

该方法相当于在.NET中运行MATLAB程序,获取其结果。优点是操作简单,过程简易。缺点是需要安装Matlab软件。如果要调用神经网络工具箱,只有使用第四种方法,即引擎技术,其他方法都不可行。

这种混编方式仅仅传递参数,因此不涉及到神经网络工具箱的代码,也就没有了防盗用限制。

谷歌人工智能写作项目:小发猫

基于BP神经网络的PID控制器设计

参考一下刘金琨的《先进PID控制》这本书rbsci

例子:被控对象yout(k)=a(k)yout(k-1)/(1+yout(k-1)^2)+u(k_1)其中a(k)=1.2(1-0.8e^(-0.1k))输入信号:rin(k)=1.0和rin(k)=sin(2t)%BPbasedPIDControlclearall;closeall;xite=0.25;//学习速率alfa=0.05;//惯性系数S=1;%SignaltypeIN=4;H=5;Out=3;%NNStructureifS==1%StepSignalwi=[-0.6394-0.2696-0.3756-0.7023;-0.8603-0.2013-0.5024-0.2596;-1.07490.5543-1.6820-0.5437;-0.3625-0.0724-0.6463-0.2859;0.14250.0279-0.5406-0.7660];%wi=0.50*rands(H,IN);wi_1=wi;wi_2=wi;wi_3=wi;wo=[0.75760.26160.5820-0.1416-0.1325;-0.11460.29490.83520.22050.4508;0.72010.45660.76720.49620.3632];%wo=0.50*rands(Out,H);wo_1=wo;wo_2=wo;wo_3=wo;endifS==2%SineSignalwi=[-0.28460.2193-0.5097-1.0668;-0.7484-0.1210-0.47080.0988;-0.71760.8297-1.60000.2049;-0.08580.1925-0.63460.0347;0.43580.2369-0.4564-0.1324];%wi=0.50*rands(H,IN);wi_1=wi;wi_2=wi;wi_3=wi;wo=[1.04380.54780.86820.14460.1537;0.17160.58111.12140.50670.7370;1.00630.74281.05340.78240.6494];%wo=0.50*rands(Out,H);wo_1=wo;wo_2=wo;wo_3=wo;endx=[0,0,0];u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;y_1=0;y_2=0;y_3=0;Oh=zeros(H,1);%OutputfromNNmiddlelayerI=Oh;%InputtoNNmiddlelayererror_2=0;error_1=0;ts=0.001;fork=1:1:6000time(k)=k*ts;ifS==1rin(k)=1.0;elseifS==2rin(k)=sin(1*2*pi*k*ts);end%Unlinearmodela(k)=1.2*(1-0.8*exp(-0.1*k));yout(k)=a(k)*y_1/(1+y_1^2)+u_1;error(k)=rin(k)-yout(k);xi=[rin(k),yout(k),error(k),1];x(1)=error(k)-error_1;x(2)=error(k);x(3)=error(k)-2*error_1+error_2;epid=[x(1);x(2);x(3)];I=xi*wi';forj=1:1:HOh(j)=(exp(I(j))-exp(-I(j)))/(exp(I(j))+exp(-I(j)));%MiddleLayerendK=wo*Oh;%OutputLayerforl=1:1:OutK(l)=exp(K(l))/(exp(K(l))+exp(-K(l)));%Gettingkp,ki,kdendkp(k)=K(1);ki(k)=K(2);kd(k)=K(3);Kpid=[kp(k),ki(k),kd(k)];du(k)=Kpid*epid;u(k)=u_1+du(k);ifu(k)>=10%Restrictingtheoutputofcontrolleru(k)=10;endifu(k)。

BP神经网络原理

人工神经网络有很多模型,但是日前应用最广、基本思想最直观、最容易被理解的是多层前馈神经网络及误差逆传播学习算法(ErrorBack-Prooaeation),简称为BP网络。

在1986年以Rumelhart和McCelland为首的科学家出版的《ParallelDistributedProcessing》一书中,完整地提出了误差逆传播学习算法,并被广泛接受。

多层感知网络是一种具有三层或三层以上的阶层型神经网络。

典型的多层感知网络是三层、前馈的阶层网络(图4.1),即:输入层、隐含层(也称中间层)、输出层,具体如下:图4.1三层BP网络结构(1)输入层输入层是网络与外部交互的接口。

一般输入层只是输入矢量的存储层,它并不对输入矢量作任何加工和处理。输入层的神经元数目可以根据需要求解的问题和数据表示的方式来确定。

一般而言,如果输入矢量为图像,则输入层的神经元数目可以为图像的像素数,也可以是经过处理后的图像特征数。

(2)隐含层1989年,RobertHechtNielsno证明了对于任何在闭区间内的一个连续函数都可以用一个隐层的BP网络来逼近,因而一个三层的BP网络可以完成任意的n维到m维的映射。

增加隐含层数虽然可以更进一步的降低误差、提高精度,但是也使网络复杂化,从而增加了网络权值的训练时间。

误差精度的提高也可以通过增加隐含层中的神经元数目来实现,其训练效果也比增加隐含层数更容易观察和调整,所以一般情况应优先考虑增加隐含层的神经元个数,再根据具体情况选择合适的隐含层数。

(3)输出层输出层输出网络训练的结果矢量,输出矢量的维数应根据具体的应用要求来设计,在设计时,应尽可能减少系统的规模,使系统的复杂性减少。

如果网络用作识别器,则识别的类别神经元接近1,而其它神经元输出接近0。

以上三层网络的相邻层之间的各神经元实现全连接,即下一层的每一个神经元与上一层的每个神经元都实现全连接,而且每层各神经元之间无连接,连接强度构成网络的权值矩阵W。

BP网络是以一种有教师示教的方式进行学习的。首先由教师对每一种输入模式设定一个期望输出值。然后对网络输入实际的学习记忆模式,并由输入层经中间层向输出层传播(称为“模式顺传播”)。

实际输出与期望输出的差即是误差。按照误差平方最小这一规则,由输出层往中间层逐层修正连接权值,此过程称为“误差逆传播”(陈正昌,2005)。

所以误差逆传播神经网络也简称BP(BackPropagation)网。随着“模式顺传播”和“误差逆传播”过程的交替反复进行。

网络的实际输出逐渐向各自所对应的期望输出逼近,网络对输入模式的响应的正确率也不断上升。通过此学习过程,确定下各层间的连接权值后。

典型三层BP神经网络学习及程序运行过程如下(标志渊,2006):(1)首先,对各符号的形式及意义进行说明:网络输入向量Pk=(a1,a2,...,an);网络目标向量Tk=(y1,y2,...,yn);中间层单元输入向量Sk=(s1,s2,...,sp),输出向量Bk=(b1,b2,...,bp);输出层单元输入向量Lk=(l1,l2,...,lq),输出向量Ck=(c1,c2,...,cq);输入层至中间层的连接权wij,i=1,2,...,n,j=1,2,...p;中间层至输出层的连接权vjt,j=1,2,...,p,t=1,2,...,p;中间层各单元的输出阈值θj,j=1,2,...,p;输出层各单元的输出阈值γj,j=1,2,...,p;参数k=1,2,...,m。

(2)初始化。给每个连接权值wij、vjt、阈值θj与γj赋予区间(-1,1)内的随机值。(3)随机选取一组输入和目标样本提供给网络。

(4)用输入样本、连接权wij和阈值θj计算中间层各单元的输入sj,然后用sj通过传递函数计算中间层各单元的输出bj。

基坑降水工程的环境效应与评价方法bj=f(sj)j=1,2,...,p(4.5)(5)利用中间层的输出bj、连接权vjt和阈值γt计算输出层各单元的输出Lt,然后通过传递函数计算输出层各单元的响应Ct。

基坑降水工程的环境效应与评价方法Ct=f(Lt)t=1,2,...,q(4.7)(6)利用网络目标向量,网络的实际输出Ct,计算输出层的各单元一般化误差。

基坑降水工程的环境效应与评价方法(7)利用连接权vjt、输出层的一般化误差dt和中间层的输出bj计算中间层各单元的一般化误差。

基坑降水工程的环境效应与评价方法(8)利用输出层各单元的一般化误差与中间层各单元的输出bj来修正连接权vjt和阈值γt。

基坑降水工程的环境效应与评价方法(9)利用中间层各单元的一般化误差,输入层各单元的输入Pk=(a1,a2,...,an)来修正连接权wij和阈值θj。

基坑降水工程的环境效应与评价方法(10)随机选取下一个学习样本向量提供给网络,返回到步骤(3),直到m个训练样本训练完毕。

(11)重新从m个学习样本中随机选取一组输入和目标样本,返回步骤(3),直到网路全局误差E小于预先设定的一个极小值,即网络收敛。如果学习次数大于预先设定的值,网络就无法收敛。(12)学习结束。

可以看出,在以上学习步骤中,(8)、(9)步为网络误差的“逆传播过程”,(10)、(11)步则用于完成训练和收敛过程。通常,经过训练的网络还应该进行性能测试。

测试的方法就是选择测试样本向量,将其提供给网络,检验网络对其分类的正确性。测试样本向量中应该包含今后网络应用过程中可能遇到的主要典型模式(宋大奇,2006)。

这些样本可以直接测取得到,也可以通过仿真得到,在样本数据较少或者较难得到时,也可以通过对学习样本加上适当的噪声或按照一定规则插值得到。

为了更好地验证网络的泛化能力,一个良好的测试样本集中不应该包含和学习样本完全相同的模式(董军,2007)。

1.如何用MATLAB神经网络工具箱创建BP神经网络模型?具体有哪些步骤?请高手举实例详细解释下? 2.如何把输

%人脸识别模型,脸部模型自己找吧。

functionmytest()clc;images=[];M_train=3;%表示人脸N_train=5;%表示方向sample=[];pixel_value=[];sample_number=0;forj=1:N_trainfori=1:M_trainstr=strcat('Images\',num2str(i),'_',num2str(j),'.bmp');%读取图像,连接字符串形成图像的文件名。

img=imread(str);[rowscols]=size(img);%获得图像的行和列值。

img_edge=edge(img,'Sobel');%由于在分割图片中我们可以看到这个人脸的眼睛部分也就是位于分割后的第二行中,位置变化比较大,而且眼睛边缘检测效果很好sub_rows=floor(rows/6);%最接近的最小整数,分成6行sub_cols=floor(cols/8);%最接近的最小整数,分成8列sample_num=M_train*N_train;%前5个是第一幅人脸的5个角度sample_number=sample_number+1;forsubblock_i=1:8%因为这还在i,j的循环中,所以不可以用iblock_num=subblock_i;pixel_value(sample_number,block_num)=0;forii=sub_rows:(2*sub_rows)forjj=(subblock_i-1)*sub_cols+1:subblock_i*sub_colspixel_value(sample_number,block_num)=pixel_value(sample_number,block_num)+img_edge(ii,jj);endendendendend%将特征值转换为小于1的值max_pixel_value=max(pixel_value);max_pixel_value_1=max(max_pixel_value);fori=1:3mid_value=10^i;if(((max_pixel_value_1/mid_value)>1)&&((max_pixel_value_1/mid_value)。

BP神经网络简单应用实例,bp神经网络的设计方法相关推荐

  1. bp神经网络数据预测实例,bp神经网络实例分析

    BP人工神经网络方法 (一)方法原理人工神经网络是由大量的类似人脑神经元的简单处理单元广泛地相互连接而成的复杂的网络系统.理论和实践表明,在信息处理方面,神经网络方法比传统模式识别方法更具有优势. 人 ...

  2. 人工神经网络的应用实例,人工神经网络简单例题

    什么是神经网络,举例说明神经网络的应用 我想这可能是你想要的神经网络吧! 什么是神经网络:人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs) ...

  3. 最简单的神经网络的例子,神经网络简单应用实例

    什么叫神经网络? 南搞小孩给出基本的概念:一.一些基本常识和原理[什么叫神经网络?]人的思维有逻辑性和直观性两种不同的基本方式. 逻辑性的思维是指根据逻辑规则进行推理的过程:它先将信息化成概念,并用符 ...

  4. 人工神经网络的应用实例,人工神经网络算法实例

    神经网络算法实例说明有哪些? 在网络模型与算法研究的基础上,利用人工神经网络组成实际的应用系统,例如,完成某种信号处理或模式识别的功能.构作专家系统.制成机器人.复杂系统控制等等. 纵观当代新兴科学技 ...

  5. 人工神经网络的应用实例,人工神经网络实际应用

    神经网络算法实例说明有哪些? 在网络模型与算法研究的基础上,利用人工神经网络组成实际的应用系统,例如,完成某种信号处理或模式识别的功能.构作专家系统.制成机器人.复杂系统控制等等. 纵观当代新兴科学技 ...

  6. APP规范实例(详细的UI设计方法)

    这一套UI设计规范,包含了界面布局.颜色.文字规范.按钮规范.图标规范.图片规范.列表规范.控件规范.弹出浮层,超级详细. 大家可以借鉴下,学会自己设计一套APP设计规范,成为高级设计师.但是不要生搬 ...

  7. 《APP开发》APP规范实例-详细的UI设计方法

    转自:http://www.yixieshi.com/it/20749.html 对了一个APP开发初手来说,可能心里有很多的疑惑: 屏幕设计为多宽,宽度是不是应该设置为百分比; 按钮大小多大,怎么排 ...

  8. Android iOS APPUI设计规范实例(详细的UI设计方法)

    这一套UI设计规范,包含了界面布局.颜色.文字规范.按钮规范.图标规范.图片规范.列表规范.控件规范.弹出浮层,超级详细. 大家可以借鉴下,学会自己设计一套APP设计规范,成为高级设计师.但是不要生搬 ...

  9. BP神经网络及拟合实例

    BP神经网络基础知识及简单拟合实例 BP神经网络结构 前向计算 误差反向传播 梯度下降法 输出层参数调节 隐含层参数调节 BP神经网络拟合实例 BP神经网络结构 BP神经网络(Back Propaga ...

最新文章

  1. hyperledge工具-cryptogen
  2. mySql 注入攻击
  3. 堆排序(基于完全二叉树)
  4. 【Demo 0116】堆的使用
  5. boost::mp11::mp_quote_trait相关用法的测试程序
  6. Oracle定义变量、常量
  7. java web 自定义异常_Java web, service 层应该通过异常(自定义Exception)来中断业务吗?...
  8. HDOJ 1047 Integer Inquiry
  9. FFMPEG结构体分析:AVFormatContext
  10. 基于R语言的Meta分析(全流程、不确定性分析)方法与Meta机器学习
  11. 同一个接口返回多种数据类型
  12. 10大最毒路边小吃盘点,你常吃吗?
  13. 神途boss_神途BOSS刷新了,女玩家以身冒险前往打骨魔洞
  14. Moment.js 文档
  15. 亨登谈判策略(转载)
  16. 【旅行】飘过江南(一)。
  17. 【论文分享】Relation-Aware Graph Attention Network for Visual Question Answering
  18. Next.js v4.1.4 文档中文翻译
  19. 学会使用QT的帮助文档
  20. Excel度分秒换算成度

热门文章

  1. html5 ajax 文件上传,html5+FormData 实现ajax文件上传
  2. echarts常用配置项整合之xAxis,yAxis
  3. Microsoft Visual Basic for Applications 编译错误:更新 Declare 语句
  4. VideoJS+HLS视频加密播放
  5. 第三章 人类社会及其发展规律
  6. jssdk信息验证失败_微信公众号开发——微信JSSDK使用
  7. NC运维人员拓展知识 之 开发工具入门(一)
  8. 冒险岛2乐器制作详细方法
  9. Eclipse : java连接数据库MySQL超详细步骤
  10. 公司邮箱哪个安全?安全邮箱格式怎么填?公司邮箱号码大全