【问题标题】:Numpy Indexing Operations with Tensorflow使用 Tensorflow 进行 Numpy 索引操作
【发布时间】:2017-04-24 02:18:03
【问题描述】:

我想更新张量的值,例如:

ldream[w,:,x,y,z] = 0

但不断收到错误提示:

TypeError: 'Tensor' object does not support item assignment

【问题讨论】:

    标签: python numpy tensorflow deep-learning


    【解决方案1】:

    ldream 似乎是一个 tensorflow 变量,遗憾的是不能像 numpy 数组那样直接赋值。

    要更新 tensorflow 中张量的值,您可以进行赋值操作,然后运行(评估)该操作。这是一个关于如何执行此操作的示例:

    Tensorflow: How to modify the value in tensor

    这样做的原因是,当您对 tf 变量和操作进行编码时,您实际上是在“暂存”它们在以后发生(例如当您执行 sess.run 时);就像张量流将如何实际运行的蓝图。

    【讨论】:

    • 如果你所做的只是链接另一个答案,那么你应该把这个作为重复的答案关闭
    • @facultyofmusic 该答案是指修改 tf.Variable,我想通过使用索引和切片来选择基于张量的值,例如 numpy 数组,例如 ldream = [x,:,y,a, b]
    【解决方案2】:

    通过使用 numpy 数组创建布尔掩码来解决此问题:

    ldream_mask = np.zeros(ldream.shape, dtype=np.bool)
    

    然后选择所需的索引并将它们标记为 True

    ldream_mask[w,:,x,y,z] =  True
    

    然后使用 tf.where 使用 ldream_mask 更新所需的索引

    【讨论】:

      猜你喜欢
      • 2018-12-08
      • 2020-12-15
      • 2020-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多