神经网络简单的例子

上一章:

下一章:

目录

-------------------------------------------翻译:xychn15@yahoo.com.cn--------------------------------

神经网络简单的例子

 

例 33  
你的任务是建立并训练一个神经网络解决异或问题。异或函数在两个输入不等的情况下输出1。如表4.1.

 

Table 4.1: The XOR-problem
ABA XOR B
110
101
011
000

 


为解决这个问题,我们需要一个前向神经网络,包含两个输入神经元,一个输出神经元。由于这个问题不是线性可分离的,所以还需要一个由两个神经元组成的隐含层。

/* eventuellt en bild på hur nätet ska se ut*/

现在我们知道神经网络的样子,但我们怎么建立?

建立前向神经网络使用命令 newff. 你必须输入 输入值得最大和最小值,每层神经元的数目和激活函数的选择。

>> net = newff([0 1; 0 1],[2 1],{'logsig','logsig'})

变量现在包含没有训练的前向神经网络,有两个神经元的输入层,两个神经元的隐含层和一个输出神经元,这正是我们想要的。 [0 1; 0 1]告诉 matlab 输入范围在0到1之间。{'logsig','logsig'} 告诉matlab 我们想使用 logsig 函数作为所有层的激活函数.第一个参数告诉网络输入层有多少神经元,因此你不需要在第二个参数中指定。你需要指定层的转移函数,不计算输入层。如果你不指定转移函数matlab将使用默认设置。

 

Figure 4.1: The logsig activation function
/includegraphics [width=0.65/linewidth]{logsig.eps}

 

现在我们想测试一下没有训练的网络解决异或问题怎么样。首先我们建立输入矩阵。神经网络的输入通常是列矩阵。建立输入为 "1 1", "1 0", "0 1" 和 "0 0"的矩阵,我们输入:

>> input = [1 1 0 0; 1 0 1 0]

input =

1 1 0 0
1 0 1 0

现在我们已经建立输入到我们的网络。让我们把它们输入到网络中看会有什么结果。sim 命令用来仿真和计算网络的输出,想知道更多关于使用命令的信息输入 helpwin sim. 最简单的方法是输入网络的名字和输入矩阵的名字,将返回输出矩阵。

>> output=sim(net,input)

output =

    0.5923    0.0335    0.9445    0.3937

输出并不是我们所想要的!我们期望 (0 1 1 0) 但是结果接近(0.60 0.03 0.95 0.40). (注意你的网络的结果也许不一样,这是因为初始化的时候权值是随机设定的。)你可以画出输出值和目标值,目标值是我们期望网络产生的。建立目标矢量:
>> target = [0 1 1 0]

target =

0 1 1 0

画点使用"plot"命令. 我们期望目标值是小圆圈,所以我们使用命令:

>> plot(target, 'o')

我们想在同一个窗口中输出。通常情况下你画新内容的时候会擦掉窗口的内容。这种情况下我们希望目标值保留在图片 中,所以我们使用 hold on命令. 输出值用 +.
>> hold on

>> plot(output, '+')
得到的结果图像 (Fig 4.2) 很容易看出网络给出的不是我们想得到的结果。为了改变这个我们需要训练它。现在我们通过手动调节权值的方法来训练它。

 

 

/includegraphics [width=0.65/linewidth]{xor-target-n-output.eps} 

Figure 4.2: The targets and the actual output from an untrained XOR network. The targets are represented as 'o' and the output as '+'

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

上一章:绪论

下一章:使用Matllab学习Matlab

目录

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值