Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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
Python 如何从常数创建Tensorflow中的复杂常数_Python_Python 3.x_Tensorflow - Fatal编程技术网

Python 如何从常数创建Tensorflow中的复杂常数

Python 如何从常数创建Tensorflow中的复杂常数,python,python-3.x,tensorflow,Python,Python 3.x,Tensorflow,我想基于其他tensorflow consant/占位符的值创建一个tensorflow常量。假设输入必须是tf.constant/tf.placeholder 如何应用tensorflow逻辑基于该常量创建一个常量? 例如: i = tf.constant(...) ei = tf.zeros(shape=[N]) ei[i] = 1 这是行不通的,因为 TypeError: 'Tensor' object does not support item assignment 这是有道

我想基于其他tensorflow consant/占位符的值创建一个tensorflow常量。假设输入必须是tf.constant/tf.placeholder

如何应用tensorflow逻辑基于该常量创建一个常量? 例如:

 i = tf.constant(...)
 ei = tf.zeros(shape=[N])
 ei[i] = 1
这是行不通的,因为

 TypeError: 'Tensor' object does not support item assignment

这是有道理的,因为你不应该变异一个常数。我也不希望本例中的
ei
是变量,因为它们在逻辑上是常量,在我运行网络时不应进行优化。

为此,您可以使用
tf.scatter\n
。有点密集,但是一个简单的用法可能是

i = tf.constant(...)  # assuming this is a scalar int tensor
ei = tf.scatter(i, 1, shape=[N])

这将创建除在
i
之外的所有零的N元素向量,其中值将为1。如果您希望
ei
在图形中也是一个常量,那么您应该能够针对这种特殊情况调用
tf.constant(ei)

,您可以执行以下操作:

i = tf.constant(...)
ei = tf.cast(tf.equal(tf.range(N), i), dtype=tf.float32)

目前,必须逐个元素(或逐行、逐矩阵等)构造常量元素。我开始请求一个操作符,它允许你产生一个张量,替换它的一些元素,因为在很多情况下,它看起来比它应该的更复杂,但到今天为止它还没有前进。您将不得不使用连接、堆叠等。首先,非常感谢您的回答,您打开了这个问题。我不明白为什么这么大的图书馆没有一个简单的方法来做这么基本的事情。我读了你的文章,似乎只花了几个月的时间就被注意到了。由于缺少这个更好的API,您能告诉我一个相对简单的方法来完成我所问的操作吗?