|
|
51CTO旗下网站
|
|
移动端

2.3 实现一个单层神经网络

《Python深度学习实战:75个有关神经网络建模、强化学习与迁移学习的解决方案》第2章前馈神经网络,本章的重点是为FNN 和其他网络拓扑的常见实现问题提供解决方案。本章讨论的技术也适用于后续内容。本节为大家介绍实现一个单层神经网络。

作者:程国建/周冠武 译来源:机械工业出版社|2018-08-30 18:35

2.3 实现一个单层神经网络

现在可以转向神经网络,从实现最简单的神经网络形式开始:单层神经网络。它与感知器的区别在于计算过程是由多个神经元完成的,因此构成一个网络。正如所期望的那样,增加更多的神经元会增加可解决问题的难度。这些神经元分别执行它们的计算并堆叠在一个层中,这个层称为隐层。所以,在该层堆叠的神经元称为隐层神经元。现在,只考虑单个隐层。输出层表现为感知器。这一次,作为输入,在隐层中的神经元为隐层神经元而不是输入变量,如图2.4 所示。

在感知器的实现中,使用了单位阶跃函数来确定类别。在下一个方案中,将对隐层神经元和输出函数使用一个非线性激活函数sigmoid。通过用非线性激活函数代替阶跃函数,网络也将能够发现非线性模式。稍后在“激活函数”一节中将进一步介绍。在后向传递中,使用sigmoid 函数的导数来更新权重。

在下面的方案中,将用NumPy 对两个非线性可分的类进行分类。

如何去做…

1)导入函数库和数据集:

2)首先,创建训练数据:

3)绘制数据的分布来显示两个类:

非线性可分数据示例如图2.5 所示。

4)标准化数据,以确保两个圆的中心是(1,1):

5)为了确定算法的性能,对数据进行分割:

6)线性激活函数在这种情况下不起作用,所以使用sigmoid 函数:

7)接下来,定义超参数:

8)初始化权重和其他变量:

9)运行单层神经网络并输出统计信息:

在图2.6 中,显示了训练期间的输出结果:

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书会第9群:808517103

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

共章 |

人订阅学习

共章 |

人订阅学习

读 书 +更多

Linux指令速查手册

Linux是一款开源的操作系统,得到了广大开发者的青睐。掌握Linux系统的指令及其用法是学习Linux系统的基础。本书详细地介绍了常用Linux指令...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO播客