n=-5:0.1:5
a=hardlims(n)
plot(n,a)
grid on
n=-5:0.1:5
a=purelin(n)
plot(n,a)
grid on
n=-5:0.1:5
a=logsig(n)
plot(n,a)
grid on
n=-5:0.1:5
a=tansig(n)
plot(n,a)
grid on
在网络中需要调用这些函数作为传递函数用函数
net.layer{i}.transferFcn='tansig'
a=3; %行数
b=3; %列数
c=4; %神经元数
W=ones(c,b);
B=ones(c,a);
P=ones(b,a);
x=W*P+B %计算神经网络加权输入
A=logsig(x)%计算神经网络输出
amphibian% % % % % %建立一个感知神经网络% % % % % %
x=[0 1 0 1;0 0 1 1];
t=[0 0 0 1];
net=perceptron;
net=configure(net,x,t);
net.iw{1,1}讲述英文
net.b{1}
% % % % % %训练所建立的神经网络% % % % % %
net=train(net,x,t);
net.iw{1,1}
net.b{1}
%初始化模型
net.iw{1,1}
%网络输入的和函数,即通过某一层的加权输入和偏差值相加作为该层的输入
z1=[1 2 4;3 4 1];
z2=[-1 2 2;-5 -6 1];
b=[0;-1];
n=netsum({z1,z2,concur(b,3)})
我爱你的英文
%网络样本绘制
p=[0 0 1 1;0 1 0 1];
t=[0 0 0 1];
plotpv(p,t) %p为N个2或3维样本矩阵,t为样本点的类别
net.b{1}
%神经网络平均绝对误差
net=perceptron;
net=configure(net,0,0);
p=[-10 -5 0 5 10];
t=[0 0 1 1 1];
y=net(p);
e=t-y;
perf=mae(e)
%误差平方和和性能函数s
[x,t]=simplefit_datat % x为输入值,t为目标向量
net=fitnet(10)
net.performFcn='s'
net=train(net,x,t)
y=net(x)
e=t-y
perf=s(net,t,y)
%计算线性层最大稳定学习速率函数maxlinlr
P=[1 2 -4 7;0.1 3 10 6];
lr=maxlinlr(P,'bias')
%最小方差准则学习函数,获得神经网咯权值调整值
P=rand(2,1);
e=rand(3,1);
%利用函数newlind建立一个线性神经网络,可以把Pi去掉并测试其性能。
P={1 2 1 3 3 2}
Pi={1 3}
T={5.0 6.1 4.0 6.0 6.9 8.0}
net=newlind(P,T,Pi);%根据参数建立线性神经网络
Y=sim(net,P,Pi) %测试性能
%m均方差性能函数
[x,t]=hou_datat
net=feedforwardnet(10);
rossionnet.performFcn='m';
ularization=0.01;
net=train(net,x,t);
y=net(x);
perf=perform(net,t,y);
perf=m(net,t,y,'regularization',0.01)
%误差平方和函数
m=sumsqr([1 2; 3 4])
[s,n]=sumsqr({[1 2;NaN 4],[4 5;2 3]}) %s为有限值得平方和,n为有限值的个数
lp.lr=0.5;
dW=learnwh([],P,[],[],[],[],e,[],[],[],lp,[])
%计算误差曲面函数errsurf
p=[-6.0,-6.1,-4.1]
t=[+0.0,+0.1,+.97]
wv=-0.5:.5:0.5;bv=-2:2:2; %权值矩阵和偏差矩阵
es=errsurf(p,t,wv,bv,'logsig');
plotes(wv,bv,es,[60 30]) %画误差曲面,后面的矩阵是期望视角
%22计算误差曲面函数errsurf
p=[3 2]
t=[0.4 0.8]
wv=-4:0.4:4; bv=wv; %权值矩阵和偏差矩阵
es=errsurf(p,t,wv,bv,'logsig');
plotes(wv,bv,es,[60 30]) %画误差曲面,后面的矩阵是期望视角
W=-3
B=1;
E=sumsqr(t-sumusff(p,W,B,'logsig'))
plotep(p,W,B,E) %在误差曲面上绘制权值和偏值
%利用newrb建立径
向神经网络实现逼近
X=0:0.1:2; %神经网络输入值
T=cos(X*pi);
%%绘出此函数的采样点%%
figure(1)
plot(X,T,'+');
title('待逼近的样本点');
xlabel('输入值');
ylabel('目标值');
%%建立网络仿真%%
n=-4:0.1:4;
a1=radbas(n);
a2=radbas(n-1.5);
a3=radbas(n+2);
a=a1+1*a2+0.5*a3;
figure(2)
plot(n,a1,n,a2,n,a3,n,a,'x');
title('径向基函数的加权和');
xlabel('输入值');
ylabel('输出值');
%%径向基函数网络隐含层中每个神经元的权重和阈值指定了相应的径向基函数的位置和宽度,每一个线性输出神经元都由这些径向基函数的加权和组成%%
net=newrb(X,T,0.03,2); %设置平方和为0.03,神经元数目为2
X1=0:0.01;2;
y=sim(net,X1)
figure(3);
plot(X1,y,X,T,'*');
title('仿真结果');
xlabel('输入');
ylabel('网络输出及目标输出');
%竞争传输函数compet,使得有最大值的神经元的输出为1其余为0.
n=[0;1;-5;0.5];
a=compet(n);
subplot(2,1,1),bar(n),ylabel('n');
subplot(2,1,2),bar(a),ylabel('a');
%绘制自组织网络权值向量
pos=randtop(2,2); %随机分配神经元对应坐标
plotsom(pos)
%要求设计一个BP网络,逼近g(x)=1+sin(k*pi/2*x),实现对该非线性函数逼近,分别令k=2,3,6,进行仿真,通过参数得出信号的频率与隐含层节点之间,隐含层节点与逼近能力的关系
k=2;
p=[-1:.05:8];
t=1+sin(k*pi/2*p);
plot(p,t,'-');
title('要逼近的非线性函数');
xlabel('时间');
ylabel('非线性函数');
%%%%用neff函数建立BP神经网络结构,隐含层数目可以改变,暂时设为5,输出层有一个神经元,选择隐含层和输出层神经元传递函数分别为tansig函数和purelin函数,网络训练方法采用LM算法trainlm
n=5;
net=newff(minmax(p),[n,1],{'tansig','purelin'},'trainlm');
%对于初始网络,可以应用sim函数观察网络输出
y1=sim(net,p);
figure;
plot(p,t,'*',p,y1,'-')
title('未训练的网络输出结果');
xlabel('时间');
ylabel('仿真输出原函数');
%进行训练,训练前要设置好参数
net=train(net,p,t); %开始训练网络
%对训练好的网络进行仿真
y2=sim(net,p);
figure;
plot(p,t,'-',p,y1,'*',p,y2,'-')
title('训练后的网络输出结果');
xlabel('时间');
ylabel('仿真输出');
%改变BP神经网络隐含层的个数通过误差和训练步数对比确定隐含层的个数,并检验隐含层个数对网络性能的影响。
%选取输入变量的变化范围
x=-4:0.01:4;
%输入目标函数
y1=sin((1/2)*pi*x)+sin(pi*x);
%隐含层的神经网络的个数范围
s=9:16;
%欧氏距离
res=1:8;
%选取不同的隐含层神经元个数,对神经网络进行测试
for i=1:8;
%建立BP神经网络,输入层和隐含层激励函数为tansig,输出层为purelin
%训练函数
为trainlm,也是默认函数
net=newff(minmax(x),[1,s(i),1],{'tansig','tansig','purelin'},'trainlm')
%训练步数最大为2000
%进行网络训练
net=train(net,x,y1);
%仿真
y2=sim(net,x);
%求欧氏距离,判定隐含层神经元个数及网络性能
err=y2-y1;
res(i)=norm(err);
end
%根据BP神经网络,可以得出通用的程序,由于各种BP神经网络算法采用不同的学习函数,可以修改学习函数
x=-4:0.01:4;
y1=sin((1/2)*pi*x)+sin(pi*x);
net=newff(minmax(x),[1,15,1],{'tansig','tansig','purelin'},'trainlm')
%训练步数最大为2000
%进行网络训练
net=train(net,x,y1);
%仿真
y2=sim(net,x);
%求欧氏距离,判定隐含层神经元个数及网络性能
err=y2-y1;
res=norm(err);
%绘制,原图蓝色光滑线和仿真红色
plot(x,y1,'+');
hold onerotica
plot(x,y2,'r+');
%用RBF拟合未知函数,y=30+x1^2-5*cos(2*pi*x1)+3*x2^2--5*cos(2*pi*x2),先随机产生变量x1,x2,然后输出相应的y.根据x1,x2,y,的数据作为输入数据和输出数据,建立近似或精确RBF网络来实现。
x1=-1:0.01:1;
x2=-1:0.01:1;
y=30+x1.^2-5*cos(2*pi*x1)+3*x2.^2-5*cos(2*pi*x2);
%建立网络
net=newrbe([x1;x2],y);
t=sim(net,[x1;x2]); %仿真
figure(1)
plot3(x1,x2,y,'rd');
hold on
plot3(x1,x2,t,'b-');
view(100,25)
title('RBF神经网络拟合效果');
xlabel('x1');
ylabel('x2');
zlabel('y');
grid on
x3=-2:0.1:2;
x4=-2:0.1:2;
y2=sim(net,[x3,;x4]);
plot3(x3,x4,y2,'g-');
title('RBF神经网络y预测效果');
xlabel('x3');
ylabel('x4');
zlabel('y2');
%用 近似RBF网络进行拟合
x=rand(2,200); %产生输入变量x1,x2,
x=(x-0.5)*1*2;
x1=x(1,:);
x2=x(2,:); %将x准换为-1到1之间
y=30+x1.^2-5*cos(2*pi*x1)+3*x2.^2-5*cos(2*pi*x2);
net=newrb(x,y);
[n,m]=meshgrid(-1:0.1:1);
row=size(n);
tx1=n(:);
tx1=tx1';
tx2=m(:);
tx2=tx2';
tx=[tx1;tx2]; %建立测试样本
t=sim(net,tx);
%画图
p=reshape(t,row);
subplot(1,3,1)
mesh(n,m,p);
zlim([0,50])
title('仿真结果图像');
%目标函数图像
[x1,x2]=meshgrid(-1:0.1:1);
y=30+x1.^2-5*cos(2*pi*x1)+3*x2.^2-5*cos(2*pi*x2);
subplot(1,3,2)
mesh(x1,x2,y);
zlim([0,50])
title('目标函数图像');
%误差图
subplot(1,3,3)
mesh(n,m,y-p);
zlim([-0.1,0.05])
title('误差图像');
t(gcf,'position',[400,280,880,390])
%22利用newhop函数,设定有三列目标向量,建立具有两个稳定点的Hopfief神经网络
%定义三列目标向量汉英词典在线查询
T=[-1 1;1 -1;-1 -1];
%绘制两个稳定点的Hopfief神经网络空间图形
axis([-1 1 -1 1 -1 1])
t(gca,'box','on'); axis manual;
hold on
plot3(T(1,:),T(2,:),T(3,:),'r+');
title('状态空间');
xlabel('a(1)');
ylabel('a(2)');
z
label('a(3)');
view([37.5 30]);
%创建网络
net=newhop(T);
a={rands(3,1)}; %定义随机起点
[y,Pf,Af]=net({1 10},{},a); %仿真参数设定
%设定活动点
record=[cell2mat(a) cell2mat(y)];
start=cell2mat(a);
hold on
plot3(start(1,1),start(2,1),start(3,1),'bx',...
record(1,:),record(2,:),record(3,:))
%利用newhop函数,设定有三列目标向量,建立具有两个稳定点的Hopfief神经网络
%定义三列目标向量
T=[-1 1;1 -1;-1 -1];
%绘制两个稳定点的Hopfief神经网络空间图形
axis([-1 1 -1 1 -1 1])
t(gca,'box','on'); axis manual;
hold on
plot3(T(1,:),T(2,:),T(3,:),'r+');
title('状态空间');
xlabel('a(1)');
ylabel('a(2)');
zlabel('a(3)');
view([37.5 30]);
%创建网络
net=newhop(T);
a={rands(3,1)}; %定义随机起点
[y,Pf,Af]=net({1 10},{},a); %仿真参数设定
%设定活动点
record=[cell2mat(a) cell2mat(y)];
start=cell2mat(a);
hold on
plot3(start(1,1),start(2,1),start(3,1),'bx',...
record(1,:),record(2,:),record(3,:))
%重复模拟20个初始条件
color='rgbmy'
for i=1:20
a={rands(3,1)};
[y,Pf,Af]=net({1 10},{},a);
record=[cell2mat(a) cell2mat(y)];
start=cell2mat(a);
plot3(start(1,1),start(2,1),start(3,1),'kx',...
record(1,:),record(2,:),record(3,:),color(rem(i,5)+1))
end
P=[1 -1 -0.5 1 1;...
0 0 0 0 0;...
-1 1 0.5 -1 -1];
cla
plot3(T(1,:),T(2,:),T(3,:),'r+');
color='rgbmy'
for i=1:5
a={P(:,i)};
[y,Pf,Af]=net({1 10},{},a);
record=[cell2mat(a) cell2mat(y)];
start=cell2mat(a);
plot3(start(1,1),start(2,1),start(3,1),'kx',...
record(1,:),record(2,:),record(3,:),color(rem(i,5)+1))
end
%SOFM网络在样本排序,分类,检测方面的广泛应用
m=9
n=8
P=rand(m,n);
for i=1:m
for j=1:n
if P(i,j)>0.7
P(i,j)=1;
el
P(i,j)=0;
end
end
end
P=P';
%建立网络,竞争层为6*7个神经元
net=newsom(minmax(P),[6,7]);
plotsom(net.layers{1}.positions)
%八次训练次数
a=[5 20 40 80 160 320 640 1280];
yc=rands(9,9);
%训练步数为5
%训练网络及查看分类
net=train(net,P);
y=sim(net,P);
yc(1,:)=vec2ind(y);
figure(1)
subplot(2,2,1);
plotsom(net.IW{1,1},net.layers{1}.distances)
hold on
%训练步数为20
%训练网络及查看分类
net=train(net,P);
y=sim(net,P);
yc(2,:)=vec2ind(y);
figure(1)
subplot(2,2,2);
plotsom(net.IW{1,1},net.layers{1}.distances)
hold on
%训练步数为40
%训练网络及查看分类
net=train(net,P);
y=sim(net,P);
yc(3,:)=vec2ind(y);
figure(1)
subplot(2,2,3);
plotsom(net.IW{1,1},net.layers{1}.distances)
%设定样本仿真网络
t=rand(m,n)';%要转置
r=sim(net,t);
%将单值向量准换成下标向量
rr=vec2ind(r);
figure(2)
plotsomtop(net)
%查看临近神经元直接的距离情况
figure(3)
plots
omnd(net)
%查看每个神经元的分类情况
figure(3)
plotsomhits(net,P)
M = 10; % 人脸朝向类别数
N= 5; % 特征向量提取
pixel_value=extraction(M,N);
rand_label=randperm(M*N);
% 人脸朝向标号
direction_label=[1 0 0;1 1 0;0 1 1;0 1 0;0 0 1];
% 训练集
train_label=rand_label(1:30);
P_train=pixel_value(train_label,:)';
dtrain_label=train_label-floor(train_label/N)*N;
dtrain_label(dtrain_label==0)=N;
T_train=direction_label(dtrain_label,:)';
% 测试集
test_label=rand_label(31:end);
P_test=pixel_value(test_label,:)';
dtest_label=test_label-floor(test_label/N)*N;
dtest_label(test_label==0)=N;
T_test=direction_label(dtest_label,:)';
%建立网络
net=newff(minmax( P_train),[10,3],{'tansig','purelin'},'trainlm')
%训练步数最大为2000
t=0;
if t==0
net=train(net,P_train,T_train);
T_sim=sim(net,P_test);
for i=1:3
for j=1:20
if T_sim(i,j)<0.5
T_sim(i,j)=0;
el
T_sim(i,j)=1;
end
end
end
%比较
[a,b]=size(T_sim);
m=0
n=0;
proud的名词for i=1:b
for j=1:a
if T_sim(j,i)==T_test(j,i)
m=m+1;
el
m=0
end
if m==a
n=n+1;
m=0;
end
end
end
c=n/b口才班
disp(['识别率为: ' num2str(n/b*100) '%']);
if c>0.9
t=t+1;
end
end
T_test
T-train
%特征提取因子函数
function pixel_vaule=extraction(m,n)
pixel_vaule=zeros(50,8);
sampel_number=0;
for i=1:m
for j=1:n
str=strcat('Images\',num2str(i),'_',num2str(j),'.bmp');
img=imread(str);
[rows cols]=size(img);
img_edge=edge(img,'Sobel');
sub_rows=floor(rows/6);
sub_cols=floor(cols/8);
sampel_number= sampel_number+1;
for subblock_i=1:8
for ii=sub_rows+1:2*sub_rows
for jj=(subblock_i-1)*sub_cols+1:subblock_i*sub_cols
pixel_vaule(sampel_number,subblock_i)=...
pixel_vaule(sampel_number,subblock_i)+img_edge(ii,jj);
end
end
end
end
end
%利用前馈网络预测
%输入样本
p=[2845,2833,4499;3456,2345,1234;4657,3450,2342;9879,2312,2341;3421,2345,6789;...
2745,3833,5499;3956,2645,5234;4557,3480,2842;4879,2612,2841;3621,7345,9789;...
6745,3833,6499;2956,2745,5634;4857,3480,2872;4979,2312,8841;3621,7355,1789;...
8745,3733,4499;1956,2845,5934;4457,6480,3872;4879,6312,8341;3121,7255,2789;...
645,3333,6489;2986,2725,5434;4557,3460,2272;4979,3312,8741;3821,7955,1799;...
3489,2345,8907;2897,2364,2347]';
%期望输出
t=[6781,2344,2333,8909,7247,1344,1345,1133,8990,8273,7893,2674,1234,...
9781,2374,2833,8099,7847,1744,9345,1183,8950,8573,7993,2674,1434,...
3666];
ptest=[2845,2833,4499;3456,2345,1234;4657,3450,2342;9879,2312,2341;3421,2345,6789;...
2745,3833,5499;3956,2645,5234;4557,3480,2842;4879,2612,2841;3621,7345,9789;...
6745,3833,6499;2956,2745,5634;4857,3480,2872;4979,2312,8841;3621,7355,1789;...
8745,3733,4499;1956,2845,5934;4457,6480,3872;4879,6312,8341;3121,7255,2789;...
645,3333,6489;2986,2725,5434;4557,3460,2272;4979,3312,8741;3821,7955,1799;...
3489,2345,8907;2897,2364,2347;4568,4015,3666]';
[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t); %数据归一化
NodeNum1=50; %隐含层第一节点数
NodeNum2=40; %隐含层第二节点数
TypeNum=1; %输出维数
TF1='tansig';
TF2='tansig';
TF3='tansig';
net=newff(minmax(pn),[NodeNum1,NodeNum2,TypeNum],{TF1,TF2,TF3},'traingdx');
%设置参数
net=train(net,pn,tn);
p2n=tramnmx(ptest,minp,maxp); %测试数归一化
an=sim(net,p2n);
[a]=postmnmx(an,mint,maxt); %反归一化
figure(1)
subplot(1,2,1);
plot(1:length(t),t,'o',1:length(t)+1,a,'+');
title('o表示预测值---*表示实际值');
legend('预测值','实际值');
grid on2017年2月25日
m=length(a)
t1=[t,a(m)];
error=t1-a;
subplot(1,2,2);
plot(1:length(error),error);
title('误差变化');
grid on
%用RBF拟合三个3333333未知函数,y=30+x1^2-5*cos(2*pi*x1)+3*x2^2--5*cos(2*pi*x2),先随机产生变量x1,x2,然后输出相应的y.根据x1,x2,y,的数据作为输入数据和输出数据,建立近似或精确RBF网络来实现。
x1=-1:0.01:1;
x2=-1:0.01:1;
x3=-1:0.01:1;
y=30+x1.^2-5*cos(2*pi*x1)+3*x2.^2-5*cos(2*pi*x2)+5*sin(2*pi*x3);
%建立网络
net=newrbe([x1;x2;x3],y);
t=sim(net,[x1;x2;x3]); %仿真
figure(1)
plot3(x1,x2,y,'rd');
hold on
plot3(x1,x2,t,'b-');
view(100,25)
汉堡包英文
title('RBF神经网络拟合效果');
xlabel('x1');
ylabel('x2');
zlabel('y');
grid on
x4=-2:0.1:2;
x5=-2:0.1:2;
x6=-2:0.1:2;
y2=sim(net,[x4;x5;x6]);
plot3(x4,x5,y2,'g-');
title('RBF神经网络y预测效果');
xlabel('x4');
ylabel('x5');
zlabel('y2');
%自己导入的数据
%输入样本
p=input';
%期望输出
t=output';
ptest=[0.8147,0.6324,0.9575,0.9572;...
0.9058,0.0975,0.9649,0.4854;...
0.1270,0.2785,0.1576,0.8003;...
0.1270,0.2785,0.1576,0.8003;...
0.8147,0.6324,0.9575,0.9572;...
0.9058,0.0975,0.9649,0.4854;...
0.1270,0.2785,0.1576,0.8003;...
0.1270,0.2785,0.1576,0.8003;...
0.8147,0.6324,0.9575,0.9572;...
0.9058,0.0975,0.9649,0.4854;...
0.1270,0.2785,0.1576,0.8003;...
0.1270,0.2785,0.1576,0.8003;...
0.8147,0.6324,0.9575,0.9572;...
0.9058,0.0975,0.9649,0.4854;...
0.1270,0.2785,