
3.1 张量
TensorFlow包含构建数据流图与计算数据流图等,其构图的基础单元是Tensors(张量)。张量是TensorFlow最核心的组件,所有的运算和优化都是基于张量完成的。
本节将使用TensorFlow 2.0对张量进行介绍。
(1)在TensorFlow 2.0中,所有的操作都必须导入TensorFlow,代码如下。

(2)代码的运行结果是打印目前使用的TensorFlow版本。

说明:从TensorFlow 2.0开始,默认启用Eager模式。TensorFlow的Eager模式是一个命令式,是由运行定义的接口,一旦被调用,其操作立即被执行,无须事先构建静态图。
(3)张量是一个多维数组,在TensorFlow 2.0中表现为tf.Tensor对象与NumPy ndarray对象类似,tf.Tensor对象具有数据类型和形状。在TensorFlow 2.0中,tf.Tensors可以保持在GPU中。TensorFlow提供了丰富的操作库(tf.add、tf.matmul、tf.linalg.inv等),灵活使用这些操作库可以方便地操作tf.Tensor对象,节省建模时间。

(4)代码的运行结果如下。


(5)在TensorFlow 2.0中的每个Tensor都有形状和类型,可以通过如下代码进行验证。

(6)代码的运行结果如下。

(7)在TensorFlow 2.0中,NumPy数组和tf.Tensors之间最明显的区别是:①张量可以由GPU(或TPU)支持;②张量不可变;③TensorFlow tf.Tensors和NumPy ndarray之间的转换很容易。使用下面的例子进行介绍。

(8)代码的运行结果如下。

说明:TensorFlow操作能够自动将NumPy ndarray转换为Tensors。