深度学习实战:基于TensorFlow 2和Keras(原书第2版)
上QQ阅读APP看书,第一时间看更新

1.5 感知器

感知器是一种简单的算法,其输入向量(通常称为输入特征,简称为特征)为xx1, x2, …, xm,共m个值),输出为1(“是”)或0(“否”)。数学上,我们据此定义一个函数:

027-01

其中w是权重向量,wx是点积027-02b是偏置。wx + b实际上定义了一个边界超平面,由wb的值改变位置。

注意,超平面是一个子空间,其维数比它周围空间的维数少1。示例如图1-3所示。

027-03

图1-3 超平面示例

该算法简洁且行之有效。例如,给定三个输入特征,如红色、绿色和蓝色的数值,感知器可以尝试确定该颜色是否为白色。

需要注意的是,感知器无法表示“也许”结论。假设我们已经掌握了如何确定感知器的wb,那么它只能回答“是”(1)或“否”(0)。这就是所谓的“训练”过程,将在以下各节中讨论。

TensorFlow 2.0代码的第一个例子

tf.keras中创建模型的方式有3种:序列(Sequential)API、功能(Functional)API和模型(Model)子类。在本章中,我们将使用最简单的Sequential(),在第2章中再讨论另外两个。Sequential()模型是神经网络层的线性管道(栈)。以下代码定义了一个含有10个人工神经元的单层模型,期望输入变量(特征)个数为784。请留意,该网络是稠密的(dense),意味着每层中的每个神经元都连接到上一层的所有神经元,以及下一层的所有神经元:

028-01

通过参数kernel_initializer,每个神经元都能用特定的权重值初始化。有多种参数值可供选择,常见如下:

  • random_uniform:权重初始化值在-0.05~0.05的小范围内均匀随机分布。
  • random_normal:权重初始化值服从均值为零、标准差为0.05的高斯分布。若对高斯分布不太熟悉,可以将其想象成一个对称的“钟形曲线”形状。
  • zero:所有权重初始化为0。

完整的参数列表可访问线上文档:https://www.tensorflow.org/api_docs/python/tf/keras/initializers