简洁的BP及RBF神经网络代码
来源:互联网 发布:nginx静态资源服务器 编辑:程序博客网 时间:2024/06/09 03:38
BP神经网络
function [W,err]=BPTrain(data,label,hiddenlayers,nodes,type)%Train the bp artial nueral net work%input data,label,layers,nodes,type%data:dim*n%label:1*n%layers:m:number of hidden layers%nodes:num_1;num_2...num_m%type==1:create and train%type==0:train%tanh / 双曲正切: tanh(x) = sinh(x) / cosh(x)=[e^x - e^(-x)] / [e^x + e^(-x)]%(tanh(x))'=sech^2(x)%sech / 双曲正割: sech(x) = 1 / cosh(x) = 2 / [e^x + e^(-x)]if type==1 %create the nureal network and train nodes=[size(data,1);nodes]; nodes=[nodes+1;size(label,1)]; %W{1}=random(,nodes(1)); layers=hiddenlayers+2; for i=1:layers-2 W{i}=rand(nodes(i),nodes(i+1)-1); end W{layers-1}=rand(nodes(layers-1),nodes(layers));else %do nothingend%train the bp network%the termination condition%iteration.erroriter=0;error=inf;maxiter=2000;lr=0.1;epision=0.1;ticwhile iter<maxiter&&error>epision iter=iter+1; error=0; for k=1:size(data,2) %forward process y{1}=[data(:,k)]; v{1}=y{1}; for i=1:layers-1 y{i}=[1;y{i}]; v{i+1}=W{i}'*y{i}; y{i+1}=tanh(v{i+1}); end %back process error=error+abs(label(k)-y{layers}); delta=(label(k)-y{layers}).*((sech(v{layers}).^2)); W{layers-1}=W{layers-1}+lr.*(y{layers-1}*delta); for i=layers-1:-1:2 delta=sech(v{i}).^2.*(W{i}(1:size(W{i},1)-1,:)*delta); W{i-1}=W{i-1}+lr.*(y{i-1}*delta'); end end err(iter)=error; errorendtoc测试代码
function res=BPTest(W,data)for k=1:size(data,2) y=data(:,k); for i=1:length(W)-1 y=[1;y]; y=tanh((W{i}'*y)); end res(k)=tanh(W{i+1}'*[1;y]);end
global rbf_sigma;global rbf_center;global rbf_weight;if strcmp(traintype,'data') traindist=pdist2(traindata,traindata); rbf_sigma=max(max(traindist))/(scale.^2);%/(2*sqrt(sqrt(length(traindata)))); rbf_center=traindata; Phi=exp(-traindist./rbf_sigma); rbf_weight=inv(Phi)*trainlabel; else if strcmp(traintype,'cluster') [Idx,C,sumD,D]=kmeans(traindata,K,'emptyaction','singleton'); traindist=pdist2(traindata,C); Cdist=pdist2(C,C); rbf_sigma=max(max(Cdist))/(scale.^2);%/(2*sqrt(sqrt(length(traindata)))); rbf_center=C; Phi=exp(-traindist./rbf_sigma); rbf_weight=inv(Phi'*Phi)*Phi'*trainlabel; else if strcmp(traintype,'descend') end endend测试 代码
function predcict=RBFTest(data)global rbf_sigma;global rbf_center;global rbf_weight;testdist=pdist2(data,rbf_center);predcict=exp(-testdist./(2*rbf_sigma))*rbf_weight;
1 0
- 简洁的BP及RBF神经网络代码
- RBF神经网络与BP神经网络的比较
- RBF神经网络与BP神经网络的比较
- RBF神经网络与BP神经网络的比较
- RBF神经网络与BP神经网络的比较
- RBF神经网络与BP神经网络的比较
- RBF神经网络与BP神经网络的比较
- RBF神经网络与BP神经网络的比较
- BP神经网络&&RBF神经网络预测
- BP和RBF神经网络比较
- RBF神经网络与BP神经网络优缺点比较
- 【笔记】RBF神经网络与BP神经网络
- bp神经网络 原理及代码
- BP神经网络与RBF神经网络讲得好的博客链接
- rbf神经网络的实现
- BP神经网络原理及C++代码实现
- RBF神经网络与BP神经网络与matlab实现
- Matlab实现BP神经网络和RBF神经网络(一)
- 降低UIViewController切换的耦合
- Ruby中Require、Load、Include和Extend的区别
- TabHost
- javascript入门(一)
- Pono有可能取代iPod吗?
- 简洁的BP及RBF神经网络代码
- NVIDIA Update: CUDA Week in Review (Spotlight on Deep Neural Networks; CUDA 6)
- JavaScript笔记
- QT开发环境安装配置教程
- 音乐圈内有着非常重的分量
- spring aop的实现机制
- win7访问Linux Samba的共享目录提示“登录失败:用户名或密码错误”解决方法
- 表结构设计器(EZDML)V1.97版发布
- Notifaction的简单制作