24小时热门版块排行榜    

查看: 3719  |  回复: 10

oeheng

木虫 (初入文坛)

[求助] 请问关于matlab神经网络工具箱的问题 已有1人参与

请问使用nntool优化出来的权值和阈值如何用于自编的网络函数中?
同样的一组权值和阈值,使用matlab自带的sim函数是没问题的,但是同样的网络结构和参数,使用自编的网络程序输出的结果就是错的,难道是nntool在优化时对input和output数据做了什么预处理?导致我用同样的input通过自编的网络程序输出时,要先进行同样的预处理才能得到相同的结果?
先谢谢各位了~
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

eleven_xia

至尊木虫 (职业作家)

方法二不是用了minmax这个归一化函数嘛,经过了预处理得到的结果当然不一样。

发自小木虫Android客户端
人生只有一种成功,就是按照自己的意愿活下去。
4楼2018-04-22 08:22:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

eleven_xia

至尊木虫 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
没有代码没有错误提示不好说啊,是不是因为你的input和output数组的维数不对啊……

发自小木虫Android客户端
人生只有一种成功,就是按照自己的意愿活下去。
2楼2018-04-21 22:08:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

oeheng

木虫 (初入文坛)

引用回帖:
2楼: Originally posted by eleven_xia at 2018-04-21 22:08:13
没有代码没有错误提示不好说啊,是不是因为你的input和output数组的维数不对啊……

例如我自己编了一个BP网络函数mybp(),用于给定权值和阈值后输出结果,下面采用两种方法得到mybp中的参数:
方法一:
x=[-10:0.15:10];
y=atan(x);
net=newff(x,y,10,{'tansig','purelin'}','trainlm');
net.trainParam.epochs = 1000;
net.trainParam.goal = 1e-6;
[net,tr]=train(net,x,y);

方法二:
x=[-10:0.15:10];
y=atan(x);
net=newff(minmax(x),[10 1],{'tansig','purelin'}','trainlm');
net.trainParam.epochs = 1000;
net.trainParam.goal = 1e-6;
[net,tr]=train(net,x,y);


输入同样的x,我的程序mybp的仿真结果用方法二的参数输出结果是正确的,但是用方法一得到的参数就不对。
3楼2018-04-21 23:26:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

oeheng

木虫 (初入文坛)

引用回帖:
4楼: Originally posted by eleven_xia at 2018-04-22 08:22:42
方法二不是用了minmax这个归一化函数嘛,经过了预处理得到的结果当然不一样。

问题就在于我没想明白这个minmax的含义和具体操作是啥?
或者等效的说,我使用nntool打开工具箱,输入input和output数据,优化得到一组权值和阈值;我应该对input和output作什么样的变换,才能在自己编的网络中使用nntool自动优化的参数,输出正确的结果?
5楼2018-04-22 20:07:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

youyuwanglin

木虫 (著名写手)

minmax是用来获得矩阵每一行的最小值和最大值,然后根据最大最小法对输入数据进行归一化。

发自小木虫Android客户端
6楼2018-04-22 20:52:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

eleven_xia

至尊木虫 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
oeheng: 金币+10, 有帮助 2018-04-25 20:13:39
引用回帖:
5楼: Originally posted by oeheng at 2018-04-22 20:07:22
问题就在于我没想明白这个minmax的含义和具体操作是啥?
或者等效的说,我使用nntool打开工具箱,输入input和output数据,优化得到一组权值和阈值;我应该对input和output作什么样的变换,才能在自己编的网络中使 ...

你是不是想说你用nntool训练bp神经网络得到的权值和阈值,现在想通过自己编程序得到与工具箱相同的权值和阈值啊,这样是不行的,因为由数据训练得到的神经网络参数是随机的,所以你不可能得到相同的结果,那个mapminmax函数用法你help一下,或者直接百度一下,有公式的

发自小木虫Android客户端

» 本帖已获得的红花(最新10朵)

人生只有一种成功,就是按照自己的意愿活下去。
7楼2018-04-22 22:40:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

oeheng

木虫 (初入文坛)

送红花一朵
引用回帖:
7楼: Originally posted by eleven_xia at 2018-04-22 22:40:01
你是不是想说你用nntool训练bp神经网络得到的权值和阈值,现在想通过自己编程序得到与工具箱相同的权值和阈值啊,这样是不行的,因为由数据训练得到的神经网络参数是随机的,所以你不可能得到相同的结果,那个mapm ...

我自己编的程序没有训练功能,只是把权值和阈值设定后,通过网络输入给出相应的输出。但是我把nntool优化好的参数设定给我自己编的网络后,同样的输入确给出错误的输出,所以我怀疑nntool给出的网络参数是把输入输出作了某种变换后训练出来的,但是我找不到相关的说明…

发自小木虫Android客户端
8楼2018-04-23 08:26:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

oeheng

木虫 (初入文坛)

引用回帖:
6楼: Originally posted by youyuwanglin at 2018-04-22 20:52:23
minmax是用来获得矩阵每一行的最小值和最大值,然后根据最大最小法对输入数据进行归一化。

是对每一行分别进行归一化?还是求出所有行的全局最大最小之后统一进行归一化?

另外程序默认归一到0~1还是-1~1?

发自小木虫Android客户端
9楼2018-04-23 08:29:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

youyuwanglin

木虫 (著名写手)

应该是对每一行分别归一化,因为每一行代表一个样本个体,minmax函数返回结果是一个N行2列的矩阵。默认归一化到0~1。

发自小木虫Android客户端
10楼2018-04-23 10:26:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 oeheng 的主题更新
信息提示
请填处理意见