0

这是我面临的问题的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 中实际操作张量还很陌生,也许有一种正确的方法可以从串联中创建张量。

帮助?

4

1 回答 1

0

好的,明白了——你应该初始化为一个列表(根本不是张量),然后用tf.stack它把它转换成张量。

无论如何,tf.Variable在这里使用是错误的——我们不想要一个可训练的变量,我们想要tf.constant.

于 2020-06-22T15:04:48.143 回答