何时使用 tf.Variable 与 TensorArray
When to use tf.Variable vs TensorArray
我对 tensorflow 张量对象的使用有一个初学者的问题。
我误用张量流来计算一些远非矩阵乘法的算法的梯度。我知道这很可能是个坏主意——我仍然想尝试一下。
我想将中间计算的结果分配给张量的元素,以便将其传递到下一层。
由于我无法在一次操作中将整个结果张量作为一个整体计算,因此我想按元素分配结果,如果我正确理解文档,我认为应该可以这样做。
显然我可以通过使用 tf.Variable 或 TensorArray 来做到这一点。两者都允许在运行时动态分配值,同时允许通过它们计算梯度。
在所描述的(错误的)用例中,两者之间有什么区别?这里推荐的选择是什么?
最好的,
N.
tf.variable 是张量的一种基本类型,它是可变的。 Variable() 构造函数需要变量的初始值,它可以是任何类型和形状的张量。这个初始值定义了变量的类型和形状。构造完成后,变量的类型和形状就固定下来了。可以使用分配方法更改该值。
tf.TensorArray class 用于动态迭代原语,例如 while_loop 和 map_fn.
两者都允许动态分配,在您的情况下,两者都可以使用。但是定义类型的 TensorArray 是更好的使用方法,因为 tf.variable 创建一个分配变量类型的张量。
我对 tensorflow 张量对象的使用有一个初学者的问题。
我误用张量流来计算一些远非矩阵乘法的算法的梯度。我知道这很可能是个坏主意——我仍然想尝试一下。
我想将中间计算的结果分配给张量的元素,以便将其传递到下一层。 由于我无法在一次操作中将整个结果张量作为一个整体计算,因此我想按元素分配结果,如果我正确理解文档,我认为应该可以这样做。
显然我可以通过使用 tf.Variable 或 TensorArray 来做到这一点。两者都允许在运行时动态分配值,同时允许通过它们计算梯度。
在所描述的(错误的)用例中,两者之间有什么区别?这里推荐的选择是什么?
最好的, N.
tf.variable 是张量的一种基本类型,它是可变的。 Variable() 构造函数需要变量的初始值,它可以是任何类型和形状的张量。这个初始值定义了变量的类型和形状。构造完成后,变量的类型和形状就固定下来了。可以使用分配方法更改该值。
tf.TensorArray class 用于动态迭代原语,例如 while_loop 和 map_fn.
两者都允许动态分配,在您的情况下,两者都可以使用。但是定义类型的 TensorArray 是更好的使用方法,因为 tf.variable 创建一个分配变量类型的张量。