首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tf.tensor_scatter_nd_add函数确实起作用了

tf.tensor_scatter_nd_add函数确实起作用了
EN

Stack Overflow用户
提问于 2019-12-09 09:58:25
回答 2查看 138关注 0票数 1

我想在张量的第一维中插入两个新值矩阵,我使用的是tensor_scatter_add方法,但是它给了我一个错误。

代码语言:javascript
复制
indices = tf.constant([[0], [2]])
updates = tf.constant([[[5, 5, 5, 5], [6, 6, 6, 6],
                        [7, 7, 7, 7], [8, 8, 8, 8]],
                       [[5, 5, 5, 5], [6, 6, 6, 6],
                        [7, 7, 7, 7], [8, 8, 8, 8]]])
tensor = tf.ones([4, 5, 4])
updated = tf.tensor_scatter_add(tensor, indices, updates)
with tf.Session() as se:
  print(ses.run(scatter))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-09 10:59:23

只要更正这些行,您就会错误地输入这些代码,这就解决了代码中的问题:

代码语言:javascript
复制
tensor = tf.ones([4, 4, 4])
updated = tf.tensor_scatter_add(tensor, indices, updates)
with tf.Session() as se:
  print(se.run(scatter))
票数 0
EN

Stack Overflow用户

发布于 2019-12-09 10:52:02

tensor的内部二维必须与updates的内部二维相匹配。Dimension 0 in both shapes must be equal, but are 5 and 4

tensor必须与updates具有相同的dtype,但在代码中不同。

在以下方面存在错误:

代码语言:javascript
复制
with tf.Session() as se:
  print(ses.run(scatter))

您将tf.Session()化名为se,但是调用ses而不是se,并将其传递给ses.run(),但它在任何地方都没有定义;se.run(updated)应该是正确的函数调用。

带有代码修复的片段:

这对你来说应该很好。

代码语言:javascript
复制
indices = tf.constant([[0], [2]])
updates = tf.constant([[[5, 5, 5, 5], [6, 6, 6, 6],
                        [7, 7, 7, 7], [8, 8, 8, 8]],
                       [[5, 5, 5, 5], [6, 6, 6, 6],
                        [7, 7, 7, 7], [8, 8, 8, 8]]])
tensor = tf.ones([4, 4, 4], dtype=tf.int32)
updated = tf.tensor_scatter_nd_add(tensor, indices, updates)
with tf.Session() as se:
  print(se.run(updated))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59246382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档