TensorFlow机器学习(原书第2版)
上QQ阅读APP看书,第一时间看更新

2.7 使用变量

使用TensorFlow的常量是一个好的开始,但是大多数有趣的应用程序都需要变化的数据。例如,神经学家可能会对通过传感器测量神经的活动感兴趣。神经的活动脉冲可能是一个随时间变化的布尔变量。要在TensorFlow中捕获此活动,你可以使用一个Variable类来表示一个节点,其值随时间变化。

在机器学习中使用变量的例子

通过线性方程对多个点的最佳拟合是一个经典机器学习问题,在第3章会有更详细的讨论。该算法从最初的猜测开始,这是一个由几个数字(如斜率或Y轴截距)表示的方程。随着时间的推移,该算法对这些数字产生越来越好的猜测,这些数字也被称为参数。

到目前为止,我们只处理了常数。然而,对于现实世界的应用程序来说,只有常量的程序不那么有趣,所以TensorFlow允许使用更丰富的工具,比如变量,它装载可以随时间变化的值。在机器学习的世界里,参数通常会波动直至稳定下来。这使得变量成为一个很好的数据结构。

清单2.8中的代码是一个简单的TensorFlow程序,它演示了如何使用变量。当连续数据的值突然增加时,它就更新变量。想象一下随着时间的推移对神经元活动的记录。这段代码可以检测出神经元的活动突然激增。当然,出于教学目的,这个算法是过度简化了的。

从导入TensorFlow开始,TensorFlow允许你使用tf.InteractiveSession()声明一个会话。当你声明了一个交互式会话时,TensorFlow函数不需要会话属性,这使得在Jupyter Notebook中编写代码更容易。

清单2.8 使用变量

清单2.8的预期输出是一个随时间变化的脉冲值列表: