matlab bp网络 函数模拟

我们最近要交一个作业,在下想用bp网络实现,大侠能帮帮我吗?比如给一组数据,两幅图像相同坐标区域内64个像素点的值,用bp网络模拟前后两幅图这些对应像素点值间函数关系。怎... 我们最近要交一个作业,在下想用bp网络实现,大侠能帮帮我吗?
比如给一组数据,两幅图像相同坐标区域内64个像素点的值,用bp网络模拟前后两幅图这些对应像素点值间函数关系。怎么实现啊?
我的程序如下,可效果不好
clc;
i1=imread('8.bmp');
i1=i1(70:75,70:75);%取图中变化明显区域附近基本没有变化区域
figure(1)
imshow(uint8(i1));
[m,n]=size(i1);
h1=zeros(m*n,1);%初始化h1,h2为零向量
h2=zeros(m*n,1);
for i=1:m*n
h1(i)=i1(i);%将该区域内向素值转化为列向量
end
h1=h1';
i2=imread('7.bmp');
i2=i2(70:75,70:75);
figure(2)
imshow(uint8(i2));
for j=1:m*n
h2(j)=i2(j);
end
h2=h2';
figure(3)
plot(h1,h2,'*r');
title('要逼近的函数');
xlabel('原图像素点灰度值');
ylabel('目标图像素点灰度值');

n=3;
net=newff(minmax(h1),[n,1],{'tansig','purelin'},'trainlm');
y1=sim(net,h1);
figure(4);
plot(h1,h2,'*r',h1,y1,'*b');
title('未训练网络的输出结果');
xlabel('像素点灰度值');
ylabel('仿真输出蓝色 原函数红色');

net.trainParam.epochs = 100;
net.trainParam.goal = 0.001;
net = train(net,h1,h2);

% 测试网络
y2 = sim(net,h1);
figure(5);
plot(h1,h2,'*r',h1,y1,'*b',h1,y2,'*g')
title('训练后网络的输出结果');
xlabel('原图像素点灰度值');
ylabel('目标图像像素点灰度值');

请高手帮帮在下吧!
展开
 我来答
aronk_
2010-06-13 · TA获得超过532个赞
知道小有建树答主
回答量:121
采纳率:100%
帮助的人:201万
展开全部
1.n=3;
net=newff(minmax(h1),[n,1],{'tansig','purelin'},'trainlm');
h1要是是64的话,隐层的神经元数n=3太小了吧,换个8~12看看。

2.你说的效果不好是训练后误差太高吧,不知道你是用灰度图0~255做输入还 是用二值化以后的逻辑值0,1做输入?
net=newff(minmax(h1),[n,1],{'tansig','purelin'},'trainlm');要是用灰度图的话把tansig改成logsig看看。要是用二值化以后的逻辑值输入,就把tansig和purelin都改成logsig

3 训练步数net.trainParam.epochs = 100;设个1000吧,反正也多跑那么几毫秒
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式