Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Numpy 张量的向量赋值_Numpy_Tensorflow_Python - Fatal编程技术网

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))