24小时热门版块排行榜    

查看: 1585  |  回复: 6

hackfeng0

木虫 (著名写手)

[求助] MATLAB神经网络 设置输出元为1个,可是仿真后得到的结果却是多个数值,求解决 已有2人参与

使用MATLAB神经网络工具箱(nntool)做BP神经网络,想对一个值做预测;
先用数据对网络进行训练后,再次进行仿真,理想是得到一个预测值,可是得到的却是一排数值,例如得到的是X=10 12 13这样的,求解答该怎么处理?
如下这样一组数据,想预测X的值
AAE                      CT0              CA0                      C00                   AE1   
1        -65.87222222        20.15777778        -108.0144444        -29.79222222        17.58
2        -68.42777778        20.21666667        -109.3911111        -36.94333333        13.56666667
4        -68.49                  21.668               -109.8386667           -37.71066667        13.09533333
6        -71.74933333        21.024                  -113.764                 -42.30133333      11.35066667
8        -72.518                19.90066667        -115.3293333        -38.74866667        11.11
10        -76.68266667     16.92933333        -120.8926667        -38.34733333        10.58266667
X?     -79.55266667        14.532                    -122.082              -33.93133333        12.56866667
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

保持自己,不忘因何前行
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fzc1993

新虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
hackfeng0: 金币+50, ★★★★★最佳答案, 非常感谢,以后有问题时请您多指教 2016-03-02 09:33:01
你好你应该使用:有导师训练网络,训练网络时候,应该将p和t同时输入网络中,然后再将一个新的值输入得到预测值;
如果我没理解错误,程序如下
clear,clc
p = [-65.87222222 20.15777778 -108.0144444 -29.79222222 17.58000000;
     -68.42777778 20.21666667 -109.3911111 -36.94333333 13.56666667;
     -68.49000000 21.66800000 -109.8386667 -37.71066667 13.09533333;
     -71.74933333 21.02400000 -113.7640000 -42.30133333 11.35066667;
     -72.51800000 19.90066667 -115.3293333 -38.74866667 11.11000000;
     -76.68266667 16.92933333 -120.8926667 -38.34733333 10.58266667]'; %注意有转置符号,应该是5*6
t = [1 2 4 6 8 10]; % 1*6
pt = [79.55266667 14.532 -122.082 -33.93133333 12.56866667]'; %注意有转置符号,应该是5*1
net = newff(p,t,20);
net.divideFcn = ''; % 数据量太小,无需分类training,validation和test训练集
net = train(net,p,t);
y = sim(net,pt)
数据量太小,结果很不稳定。。。希望增加训练集
望有所帮助,谢谢!
努力~
2楼2016-02-26 18:16:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

i19870503

银虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
你的训练集的输出层是几个变量?

[ 发自手机版 http://muchong.com/3g ]
3楼2016-02-26 19:46:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hackfeng0

木虫 (著名写手)

引用回帖:
3楼: Originally posted by i19870503 at 2016-02-26 19:46:56
你的训练集的输出层是几个变量?

输出层是一个变量,就是预测那个X的值
保持自己,不忘因何前行
4楼2016-02-29 15:10:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hackfeng0

木虫 (著名写手)

引用回帖:
2楼: Originally posted by fzc1993 at 2016-02-26 18:16:07
你好你应该使用:有导师训练网络,训练网络时候,应该将p和t同时输入网络中,然后再将一个新的值输入得到预测值;
如果我没理解错误,程序如下
clear,clc
p = '; %注意有转置符号,应该是5*6
t = ; % 1*6
pt = ...

感谢回答,请问这个数据是否需要先归一化,从这个代码里来看,貌似没经过归一化直接运用的
保持自己,不忘因何前行
5楼2016-03-01 15:06:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fzc1993

新虫 (小有名气)

【答案】应助回帖

引用回帖:
5楼: Originally posted by hackfeng0 at 2016-03-01 15:06:52
感谢回答,请问这个数据是否需要先归一化,从这个代码里来看,貌似没经过归一化直接运用的...

MATLAB中对数据会默认预处理,自动归一化到[-1,1],然后在输出前,还原到实际值,具体的函数请见: mapminmax;
详情请见:net.inputs{1,1}.processFcns,神经网络的预处理函数。
望对你有所帮助,谢谢!
努力~
6楼2016-03-01 20:46:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hackfeng0

木虫 (著名写手)

引用回帖:
6楼: Originally posted by fzc1993 at 2016-03-01 20:46:55
MATLAB中对数据会默认预处理,自动归一化到,然后在输出前,还原到实际值,具体的函数请见: mapminmax;
详情请见:net.inputs{1,1}.processFcns,神经网络的预处理函数。
望对你有所帮助,谢谢!...

非常感谢
保持自己,不忘因何前行
7楼2016-03-02 09:33:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 hackfeng0 的主题更新
信息提示
请填处理意见