4.3 待优化张量
tensorflow增加了一种专门计算梯度信息的记录张量:tf.Variable,在普通张量的基础上新增了 name,trainable 等属性来支持计算图的构建。它会消耗大量的计算资源,而且会自动更新相关参数,对于不需要优化的张量,不需要通过tf.Variable封装
#tf.Variable()可以将普通的张量转化成待优化张量
a = tf.Constant([-1, 0, 1, 2])
aa = tf.Variable(a)
aa.name, aa.trainable
###结果
('Variable:0', True)
其中,name 属性用于命名计算图中的变量,trainable属性表征当前张量是否需要被优化,创建Variable对象时默认是开启优化状态,可以通过设置trainable=False来设置张量不需要优化
# 直接创建 Variable 张量
a = tf.Variable([[1,2],[3,4]])
###结果
<tf.Variable 'Variable:0' shape=(2, 2) dtype=int32, numpy=
array([[1, 2], [3, 4]])>
待优化张量可视为普通张量的特殊类型,普通张量其实也可以通过 GradientTape.watch()方 法临时加入跟踪梯度信息的列表,从而支持自动求导功能。
4.4 创建张量
4.4.1 从数组、列表对象创建
Numpy Array 数组和 Python List 列表是 Python 程序中间非常重要的数据载体容器,很多数据都是通过 Python 语言将数据加载至 Array 或者 List 容器,再转换到 Tensor 类型,TensorFlow 运算处理后导出到 Array 或者 List 容器,方便其他模块调用。
tf.convert_to_tensor 函数可以创建新 Tensor