我想基于其他一些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
是变量,因为它们在逻辑上是常量,并且在运行网络时不应进行优化。
答案 0 :(得分:0)
您可以为此使用tf.scatter_nd
。 The documentation有点密集,但简单的用法可能是
i = tf.constant(...) # assuming this is a scalar int tensor
ei = tf.scatter(i, 1, shape=[N])
这将创建一个全零的N元素向量,但i
的值将为1。如果您希望ei
在图形中也为常数,则应该能够只需致电tf.constant(ei)
。
答案 1 :(得分:0)
对于这种特殊情况,您可以执行以下操作:
i = tf.constant(...)
ei = tf.cast(tf.equal(tf.range(N), i), dtype=tf.float32)