0
点赞
收藏
分享

微信扫一扫

Kaggle翻译,第二十天:深度学习入门2/6

幺幺零 2022-03-22 阅读 51

深度神经网络

简介

这节课我们将看到神经网络著名的学习复杂关系的能力。
其核心的知识点是模块化,从众多简单的功能模块建立一个复杂的网络。我们已经见识过线性单元是如何计算线性函数的——现在,我们来看看如何修改这些单个单元来组合成更复杂的关系。

  • 神经网络一般以层来组织构成。当我们将具有相同输入集合的线性单元收集在一起时,我们会获得一个密度(dense)层。
  • 你可以将每一个层看成是一个相对简单的数据变形。通过一个深层的层次堆叠,一个神经网络可以将输入转化成更复杂的方式。每一层的转化将我们与最终结果拉得更近。

激活函数

  • 实际上,两个密度层中间什么都没有,和一个密度层的价值没什么区别。单单一个密度层永远不能将我们从线性和平面世界脱离出去。我们需要的是一些非线性的东西。这就是激活函数。
    没有激活函数,神经网路只能学习线性关系。要想拟合曲线,我们就要使用激活函数。
  • 激活函数 是我们使用在每一层的输出(它的激活量)上的一些函数。最常见的是修正函数 max(0, x)
  • 修正函数有一个将负值修正为零的图像。对神经元的输出使用该修正函数会使得输出值图像有一个弯曲部分,使我们的结果不再是简单的直线。
  • 当我们将修正函数与线性单元结合时,我们会获得一个修正线性单元或ReLU(因此,我们有时候称修正函数为"ReLU函数")。使用修正后的激活值意味着我们的输出变成了max(0, w * x + b)

堆叠密度层

  • 现在,我们就有了一些非线性的元素,我们 来看看如何使用堆叠层次获得复杂的数据转换。
  • 一堆密度层组合在一起就形成了"全连接的"网络
  • 在输出层之前的层次被称为隐藏层,因为它们往往不会在输出中直接体现。
  • 现在,注意如果输出层仍然是一个线性单元(意思是他的输出没有使用激活函数)。这就使得该网络适合处理回归任务,我们往往使用这种任务来预测不确定的数值。其他任务(如分类)可能在输出结果上也要运用激活函数。

建立序列化(Sequential)的模型

  • Sequential模型会将一系列的层级结构从前到后连接起来:第一层是输入层、最后一层是输出层。下面的代码创建了该模型
from tensorflow import keras
from tensorflow.keras import layers

model = keras.Sequential([
    # the hidden ReLU layers
    layers.Dense(units=4, activation='relu', input_shape=[2]),
    layers.Dense(units=3, activation='relu'),
    # the linear output layer 
    layers.Dense(units=1),
])
  • 确保我们传入的层是在一个列表中,像[layer, layer, layer, ...] ,而不是分开的参数。要将激活函数加入层中,需要传入Activation 参数。
举报

相关推荐

0 条评论