感知器是一种简单的算法,其输入向量(通常称为输入特征,简称为特征)为 x ( x 1 , x 2 , …, x m ,共 m 个值),输出为1(“是”)或0(“否”)。数学上,我们据此定义一个函数:
其中 w 是权重向量, wx 是点积 , b 是偏置。 wx + b 实际上定义了一个边界超平面,由 w 和 b 的值改变位置。
注意,超平面是一个子空间,其维数比它周围空间的维数少1。示例如图1-3所示。
图1-3 超平面示例
该算法简洁且行之有效。例如,给定三个输入特征,如红色、绿色和蓝色的数值,感知器可以尝试确定该颜色是否为白色。
需要注意的是,感知器无法表示“也许”结论。假设我们已经掌握了如何确定感知器的 w 和 b ,那么它只能回答“是”(1)或“否”(0)。这就是所谓的“训练”过程,将在以下各节中讨论。
在tf.keras中创建模型的方式有3种:序列(Sequential)API、功能(Functional)API和模型(Model)子类。在本章中,我们将使用最简单的Sequential(),在第2章中再讨论另外两个。Sequential()模型是神经网络层的线性管道(栈)。以下代码定义了一个含有10个人工神经元的单层模型,期望输入变量(特征)个数为784。请留意,该网络是稠密的(dense),意味着每层中的每个神经元都连接到上一层的所有神经元,以及下一层的所有神经元:
通过参数kernel_initializer,每个神经元都能用特定的权重值初始化。有多种参数值可供选择,常见如下:
完整的参数列表可访问线上文档:https://www.tensorflow.org/api_docs/python/tf/keras/initializers。