【问题标题】:When to use tf.Variable vs TensorArray [closed]何时使用 tf.Variable vs TensorArray [关闭]
【发布时间】:2020-03-18 14:39:33
【问题描述】:

对于 tensorflow 张量对象的使用,我确实有一个初学者的问题。

我误用了 tensorflow 来计算一些远非矩阵乘法的算法的梯度。我知道这很可能是个坏主意——我仍然想尝试一下。

我想将中间计算的结果分配给张量的元素,以便将其传递到下一层。 由于我无法在一次操作中计算整个结果张量,因此我想逐个分配结果,如果我正确理解文档,我认为应该可以这样做。

显然我可以通过使用 tf.Variable 或 TensorArray 来做到这一点。两者都允许在运行时动态分配值,同时允许通过它们计算梯度。

在所描述的(错误)用例中,两者之间有什么区别?这里推荐的选择是什么?

最好, N.

【问题讨论】:

    标签: tensorflow tensorflow2.0


    【解决方案1】:

    tf.variable 是可变张量的基本类型。 Variable() 构造函数需要变量的初始值,它可以是任何类型和形状的张量。这个初始值定义了变量的类型和形状。构造后,变量的类型和形状是固定的。可以使用 assign 方法更改值。

    tf.TensorArray 类旨在用于动态迭代原语,例如 while_loop 和 map_fn。

    两者都允许动态分配,在您的情况下,都可以使用。但是定义类型的 TensorArray 是更好的方法,因为 tf.variable 创建了一个分配变量类型的张量。

    【讨论】:

    • 以防万一其他人偶然发现这一点:我尝试了这两个选项,发现只有 TensorArray 可以通过动态分配实际跟踪渐变。不过感谢您的评论!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-30
    相关资源
    最近更新 更多