安居多伦多
  • 多市生活
    • 多市生活
    • 加国税务
    • 旅游度假
    • 生活安全
    • 行车安全
    • 窍门集锦
  • 多市书苑
    • 热门
    • 小说
    • 教育
  • 家居信息
    • 家居信息
    • 房屋保养
    • 房屋贷款
    • 房屋租赁
    • 房屋建筑
    • 房前屋后
    • 家居风水
  • 健康保健
    • 健康保健
    • 饮食起居
    • 食品安全
    • 健身锻炼
  • 书苑账户
    • 书苑登入
    • 书苑注册
    • 忘记书苑密码
    • 书苑账户信息
    • 关于我们
    • 联系我们
    • 隐私政策
多伦多书苑
在线书籍:随时阅读,随身听书。
所有书籍 | 人文 | 人物 | 人生 | 健康 | 儿童 | 医学 | 历史 | 历史 | 古典 | 哲学宗教 | 商业 | 外国 | 寓言 | 小说 | 教育 | 风水 | 管理 | 语言 |
为使本公益资源网站能继续提供免费阅读,请勿屏蔽广告。谢谢!报告弹出广告被滥用。
  1. 安居多伦多
  2. 网上书苑
  3. IT
  4. Python
  5. Python机器学习手册:从数据预处理到深度学习

Python机器学习手册:从数据预处理到深度学习

2022-02-15 0人点赞 0条评论
点赞
x
语速1.0: 2.0
进度0:

上一页   |   返回目录   |   下一页

20.2 设计一个神经网络

问题描述

设计一个神经网络。

解决方案

使用Keras的Sequential模型:

20.2 设计一个神经网络

讨论

神经网络是由多层神经元组成的,神经元层的类型以及它们组成神经网络的方式非常多。现阶段尽管有很多被广泛使用的架构模式(我们会在本章讲到),但真相却是,选择正确的架构更像是一门艺术,需要我们做很多研究工作。

要在Keras中构建一个前馈神经网络,我们需要对网络架构和训练过程做许多选择。记住,隐藏层的每个神经元都会经历如下步骤:

1.接收一些输入。

2.给每个输入乘以一个参数作为权重。

3.对所有加权过的输入求和,再加上偏差(一般是1)。

4.接下来,将这个值应用到某个函数上(又叫作激活函数)。

5.把输出传递给下一层的神经元。

第一,对隐藏层和输出层中的每一层,我们都必须定义神经元的数量和它的激活函数。总的来说,一个层中神经元越多,神经网络就越能学习复杂的模式。尽管如此,神经元过多可能会使神经网络对训练数据过拟合,影响其在测试数据上的表现。

对隐藏层来说,一个流行的激活函数是矫正的线性单元(Rectified Linear Unit,ReLU):

20.2 设计一个神经网络

这里z是加权过的输入和偏差之和。我们可以看到,如果z大于0,激活函数就返回z值;否则返回0。这个简单的激活函数有许多可贵的特性(本书不讨论这些特性),使它成为神经网络中受欢迎的激活函数。不过,你也要知道还存在很多其他的激活函数。

第二,我们需要决定神经网络中隐藏层的数量。层数越多,神经网络能学习的关系就越复杂,但是计算开销也会越大。

第三,我们必须决定输出层的激活函数(如果有的话)的结构。输出函数的本质经常由神经网络的目标决定。这里列出一些常见的输出层的模式:

二元分类

一个有sigmoid激活函数的神经元。

多元分类

k个神经元(这里k是目标分类的个数)和一个softmax激活函数。

回归

一个没有激活函数的神经元。

第四,我们需要定义一个损失函数(用来衡量预测值和真实值的符合程度)。这个函数也经常是由问题的类型所决定的:

二元分类

二分交叉熵(Binary Cross-entropy)。

多元分类

分类交叉熵(Categorical cross-entropy)。

回归

均方误差。

第五,我们需要定义一个优化器,它可以被直观地理解为我们的策略“绕过了”损失函数,并且找到了产生最小误差的那些参数值。常用的优化器有:随机梯度下降、动量随机梯度下降、均方根传播和自适应矩估计(关于这些优化器的更多信息,可以查看本节末尾的“延伸阅读”中列出的资料)。

第六,我们可以选择一个或者多个指标来评估神经网络的性能,比如准确率。

Keras提供了两种创建神经网络的方法。Keras的sequential模型通过把神经元层堆叠起来以创建神经网络。另一种创建神经网络的方法叫作函数式API,但是这种方法更适合研究人员使用而不适合商用。

在解决方案中,我们使用Keras的sequential模型创建了一个两层的神经网络(计算层数的时候,我们不会把输入层算在内,因为它没有任何参数需要学习)。每一层都是“紧密的”(又叫作全连接的),这意味着前一层的所有神经元都和下一层的所有神经元相连。在第一个隐藏层中,我们设定units = 16,表示这一层有16个神经元,每个神经元都有ReLU激活函数(activation='relu')。在Keras中,任何神经网络的第一个隐藏层都必须包含一个input_shape参数,它表示特征数据的形状。比如,(10,)就告诉我们,第一层期望每个观察值都有10个特征值。第二层和第一层一样,只不过不需要加上input_shape参数。我们的神经网络是设计来做二元分类的,所以输出层仅包含一个带sigmoid激活函数的神经元,它将输出限制在0和1之间(表示一个观察值属于分类1的概率)。

最后,在训练模型之前,还需要告诉Keras,我们想让网络如何学习。

我们用compile方法,加上优化算法(RMSProp)、损失函数(binary_crossentropy),以及一个或者多个性能衡量标准来告诉Keras如何学习。

延伸阅读

● Keras文档:损失函数(https://keras.io/losses/)

● 分类的损失函数(Wikipedia,http://bit.ly/2FwpCkM)

●《分类问题中深度神经网络的损失函数》(Katarzyna Jano cha, Wojciech Marian Czarnecki,https://arxiv.org/abs/1702.05659)

上一页   |   返回目录   |   下一页

类似书籍

机器学习实战
机器学习实战
Python机器学习实践指南
Python机器学习实践指南
Python机器学习——预测分析核心算法
Python机器学习——预测分析核心算法
Author:

标签: 暂无
最后更新:2022-02-15
< 上一篇
下一篇 >

本书评论

取消回复

©2021 安居多伦多 - 版权所有

本站由 好事来 Hostlike.com 提供技术支持。