Tensorflow:初始化串联张量的正确方法?
Tensorflow: correct way to initialize concatenated tensors?
这是我面临的问题的 MWE:
import tensorflow as tf
with tf.GradientTape() as tape:
x = tf.Variable(0.0)
y = tf.Variable(x)
z = x
print(tape.gradient(y, x))
# None
print(tape.gradient(z, x))
# 1.0
好吧,显然在这种特殊情况下这很容易解决,但在我面临的实际用例中,与递归神经网络有关,我需要使用 tf.Variable
来形成张量从连接其他张量,像这样:
Dout = tf.Variable([seed]) # initialize
for i in range(n):
Dout = tf.concat([Dout,
G.forward_step(Dout[-1])],
axis = 0)
嗯,我对在 TF 中实际操作张量还很陌生,也许有一种正确的方法可以通过串联创建张量。
帮忙?
好的,知道了——您应该初始化为一个列表(根本不是张量),然后使用 tf.stack
将其转换为张量。
无论如何,在这里使用 tf.Variable
是错误的——我们不需要可训练的变量,我们想要 tf.constant
.
这是我面临的问题的 MWE:
import tensorflow as tf
with tf.GradientTape() as tape:
x = tf.Variable(0.0)
y = tf.Variable(x)
z = x
print(tape.gradient(y, x))
# None
print(tape.gradient(z, x))
# 1.0
好吧,显然在这种特殊情况下这很容易解决,但在我面临的实际用例中,与递归神经网络有关,我需要使用 tf.Variable
来形成张量从连接其他张量,像这样:
Dout = tf.Variable([seed]) # initialize
for i in range(n):
Dout = tf.concat([Dout,
G.forward_step(Dout[-1])],
axis = 0)
嗯,我对在 TF 中实际操作张量还很陌生,也许有一种正确的方法可以通过串联创建张量。
帮忙?
好的,知道了——您应该初始化为一个列表(根本不是张量),然后使用 tf.stack
将其转换为张量。
无论如何,在这里使用 tf.Variable
是错误的——我们不需要可训练的变量,我们想要 tf.constant
.