【问题标题】:Equate a Tensor in Tensorflow在 Tensorflow 中等同于张量
【发布时间】:2019-02-27 05:34:31
【问题描述】:

我想使用以下代码在 Tensorflow 中将张量的子数组等同起来:

import tensorflow as tf
a = tf.zeros(shape=[2,2])
b = tf.placeholder(shape = [1])
a[0,0] = b

但是有一个错误信息“'Tensor'对象不支持项目分配”。我想知道为什么。

【问题讨论】:

    标签: python tensorflow


    【解决方案1】:

    Tensorflow 中的张量是构建计算图的组件。在 Tensorflow 中,张量在会话中进行评估。对于您的问题-我的猜测是赋值运算符可能是模棱两可的,因为它可能意味着按值或按引用相等(意味着a[0,0] 连接到b),这并不理想。如果你想用高维张量/矩阵进行计算,你可以使用 numpy. TensorFlow 不是为此目的而构建的。

    另外,对 Tensorflow 的抱怨之一是它不是很 Python。您可以查看 pytorch 以获得更 Python 的深度学习体验。

    【讨论】:

    • 但是如果我把它改成 b = a[0,0] 就可以了。 (这里a是占位符,b是变量)
    • 那么 a 将不再是占位符,通过将 a[0,0] 分配给 b,您丢弃了 b 的原始值/引用。 b 将是计算图意义上的 a[0,0] 的引用。
    • 我建议您阅读深度学习以及 tensowflow 试图解决的问题是什么,这样您就不会对它为什么会这样表现感到困惑。
    • 这实际上是我的问题的简化版本。我原来的问题是A是一个tf.placeholder(shape=[2,3,3,1]),现在我想复制张量来形成一个形状为[2,3,3,3]的张量
    • 我相信我看到了那个帖子并发表了评论。您可以查找我在评论中引用的帖子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-15
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多