Numpy 张量的向量赋值
我想给一个张量分配多个值,但它似乎不受支持,至少在使用时是可能的 上述方法有效,但等效方法无效:Numpy 张量的向量赋值,numpy,tensorflow,python,Numpy,Tensorflow,Python,我想给一个张量分配多个值,但它似乎不受支持,至少在使用时是可能的 上述方法有效,但等效方法无效: import tensorflow as tf a = tf.zeros((4, 4)) v = tf.Variable([0, 2, 3, 1]) r = tf.range(4) a[r, v].assign(1) TypeError:只有整数、切片、省略号、tf.newaxis和标量张量是有效的索引,明白了吗 如何做到这一点?循环是唯一的选择吗?在我的例子中,生成的数组实际上只是重新排列的单
import tensorflow as tf
a = tf.zeros((4, 4))
v = tf.Variable([0, 2, 3, 1])
r = tf.range(4)
a[r, v].assign(1)
TypeError:只有整数、切片、省略号、tf.newaxis和标量张量是有效的索引,明白了吗
如何做到这一点?循环是唯一的选择吗?在我的例子中,生成的数组实际上只是重新排列的单位矩阵的切片,因此可能可以以某种方式加以利用。您的示例将某些索引处的零张量更新为某个值,大部分时间是通过以下方式实现的:
对于更复杂的情况,您可以查看以下函数:
- :根据索引向现有张量添加稀疏更新
- :根据索引从现有张量中减去稀疏更新
- :将元素最大值从一个张量复制到另一个张量
- :将元素最小值从一个张量复制到另一个张量
- :根据索引将更新分散到现有张量中
您可以在指南中阅读更多内容:我想让您知道,您的
tf
标记答案令人惊讶,并最终帮助我们(和其他人)了解更多信息。谢谢谢谢,我还你一句恭维话。
import tensorflow as tf
a = tf.zeros((4, 4))
v = tf.Variable([0, 2, 3, 1])
r = tf.range(4)
a[r, v].assign(1)
idx = tf.stack([r,v],axis=-1)
tf.scatter_nd(idx, updates=tf.ones(4), shape=(4,4))