【问题标题】:Tensorflow: correct way to initialize concatenated tensors?Tensorflow:初始化连接张量的正确方法?
【发布时间】:2023-03-06 03:27:01
【问题描述】:

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

帮助?

【问题讨论】:

    标签: python tensorflow gradient-descent gradienttape


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-02-16
      • 1970-01-01
      • 1970-01-01
      • 2020-06-08
      • 1970-01-01
      • 1970-01-01
      • 2019-10-24
      • 2019-10-03
      • 1970-01-01
      相关资源
      最近更新 更多