![深度学习实战:基于TensorFlow 2和Keras(原书第2版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/670/40319670/b_40319670.jpg)
上QQ阅读APP看书,第一时间看更新
1.5 感知器
感知器是一种简单的算法,其输入向量(通常称为输入特征,简称为特征)为x(x1, x2, …, xm,共m个值),输出为1(“是”)或0(“否”)。数学上,我们据此定义一个函数:
![027-01](https://epubservercos.yuewen.com/FACE01/20940534208098106/epubprivate/OEBPS/Images/027-01.jpg?sign=1739319136-cdmjj3TDIaZBnEwerssOnLOsGAGxz318-0-273f6b283e73d77ef4ee1c0cdd3417f6)
其中w是权重向量,wx是点积,b是偏置。wx + b实际上定义了一个边界超平面,由w和b的值改变位置。
注意,超平面是一个子空间,其维数比它周围空间的维数少1。示例如图1-3所示。
![027-03](https://epubservercos.yuewen.com/FACE01/20940534208098106/epubprivate/OEBPS/Images/027-03.jpg?sign=1739319136-xexYrU2G4dJFFrQPFFTe6VwTJc84r4vx-0-07eecbede2600243a295820719cf9c0c)
图1-3 超平面示例
该算法简洁且行之有效。例如,给定三个输入特征,如红色、绿色和蓝色的数值,感知器可以尝试确定该颜色是否为白色。
需要注意的是,感知器无法表示“也许”结论。假设我们已经掌握了如何确定感知器的w和b,那么它只能回答“是”(1)或“否”(0)。这就是所谓的“训练”过程,将在以下各节中讨论。
TensorFlow 2.0代码的第一个例子
在tf.keras
中创建模型的方式有3种:序列(Sequential)API、功能(Functional)API和模型(Model)子类。在本章中,我们将使用最简单的Sequential()
,在第2章中再讨论另外两个。Sequential()
模型是神经网络层的线性管道(栈)。以下代码定义了一个含有10个人工神经元的单层模型,期望输入变量(特征)个数为784。请留意,该网络是稠密的(dense),意味着每层中的每个神经元都连接到上一层的所有神经元,以及下一层的所有神经元:
![028-01](https://epubservercos.yuewen.com/FACE01/20940534208098106/epubprivate/OEBPS/Images/028-01.jpg?sign=1739319136-s4Vim4kgZFaDqs1yYCTKqUg0GvWeV0WB-0-2ff509402d776a8ecce3b6fda5a281c3)
通过参数kernel_initializer
,每个神经元都能用特定的权重值初始化。有多种参数值可供选择,常见如下:
random_uniform
:权重初始化值在-0.05~0.05的小范围内均匀随机分布。random_normal
:权重初始化值服从均值为零、标准差为0.05的高斯分布。若对高斯分布不太熟悉,可以将其想象成一个对称的“钟形曲线”形状。zero
:所有权重初始化为0。
完整的参数列表可访问线上文档:https://www.tensorflow.org/api_docs/python/tf/keras/initializers
。