python - 更改 Tensorflow 中新分配变量的形状

标签 python tensorflow

如果您使用 tf.assign 更改 tf.Variable与 validate_shape=False the shape is not updated .

但是如果我使用set_shape要设置新的(正确的)形状,我得到一个 ValueError。

这是一个简单的例子:

import tensorflow as tf 

a = tf.Variable([3,3,3])

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    # [3 3 3]
    print(sess.run(a))

    sess.run(tf.assign(a, [4,4,4,4], validate_shape=False))
    # [4 4 4 4]
    print(sess.run(a))

# (3,)
print(a.get_shape())

# ValueError: Dimension 0 in both shapes must be equal, but are 3 and 4. Shapes are [3] and [4].
a.set_shape([4])

如何更改变量的形状?

注意:我知道如果我使用 a = tf.Variable([3,3,3], validate_shape=False) ,代码就可以工作,但在我的上下文中,我将无法自己初始化变量。

最佳答案

告诉图表的静态部分,形状从一开始也是未知的。

a = tf.Variable([3,3,3], validate_shape=False)

现在,要获得形状,您无法静态地知道,因此您必须询问 session ,这非常有道理:

print(sess.run(tf.shape(a)))

关于python - 更改 Tensorflow 中新分配变量的形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53611227/

相关文章:

python Selenium "Chrome is being controlled by automated test software"

python - 如果定义了 itemchange(),则无法将项目添加到项目组 (PyQt)

python - 在 tensorflow 中实现简单的线性代数运算

tensorflow - 如何在使用 tensorflow 的迁移学习中在模型之前添加几层

python - Tensorflow 2.3.0 未检测到 GPU

python - 如何使用 TensorFlow Estimator API 运行异步预测?

python - 加载 numpy .npy 文件 Opencv C++

javascript - 带有 Selenium 的 Python : Click intercepted and finding different span classes

python - 从 python 调用 Matlab 的 ODE45

tensorflow - 在tensorflow中寻找resnet实现