冰冰点灯,照亮我家门前~
欢迎进入nnetinfo
用户名:
密码:
深圳学习数据分析,数据挖掘,请联系yahushuxue@163.com~
nnetinfo : 本网发布神经网络相关的学习与研讨内容。
当前位置:教学区
提取神经网络数学表达式
作者:xiaoH   日期:2015-07-16 12:08:27.0

当我们在matlab训练好网络后,可以使用神经网络工具箱的sim(net,x)函数进行预测输出。但往往想提取出它的数学表达式,该怎么提取呢?

 

下面以《一个简单的神经网络例子》中的模型为例,提取神经网络表达式。

《一个简单的神经网络例子》中我们设置的模型为:

1:节点个数设置: 输入层、隐层、输出层的节点个数分别为[2 ,3,1]。

2:传递函数设置:隐层( tansig函数)。输出层(purelin函数)。

3:训练方式:trainlm。

 

(1)先根据我们之前所设置的BP神经网络模型,写出它的数学表达式:

(1)

表达式就参数较多,但实际只有两类参数:权重w和阈值b。

代表这个权值是第2层的第1个节点到第3层的第1个节点的权值。

 

(2)在matlab中提取:

输入代码:

w12 = net.iw{1,1} %第1层(输入层)到第2层(隐层)的权值

b2 = net.b{1}    %第2层(隐层)的阈值

 

w23 = net.lw{2,1} %第2层(输入层)到第3层(输出层)的权值

b3 = net.b{2}    %第3层(输出层)的阈值

 

可以得到w和b的值。

 

(3)代回表达式。

填入式(1)即得:

其中

 

 

 

------------------------------------------------------

JYK在邮件中提到:

 但是我在提取神经网络表达式文章中发现了一个小小的错误,最下方的tansig表达式中“tansig”的函数应为“2/(1+exp(-2*X))-1”

而非2/(1+exp(-X))-1。

      这个错误在我编程的时候困扰了我很长时间,我一直在寻找问题出现在了哪里,最后查询测试到了tansig函数发现了这个问题。

希望能予以纠正,不要给后来人也造成困扰。

现已更正,由于工作较忙碌,没有搭建评论、注册、留言等功能,若果发现什么BUG或意见反馈,欢迎邮件yahushuxue@163.com

 

>