Tensorflow:静态和动态形状

Tensorflow: static and dynamic shape

由于 tf 中的动态和静态形状,我遇到了困难。

我有

shape=tf.shape(net)
s1=tf.cast(shape[2],tf.int32)
s2=tf.cast(shape[2]/2,tf.int32)
a0=tf.random_normal([s1,s2],mean=0.,stdev=1.)
b0 = tf.get_variable(some_name, initializer=a0)

我收到错误:

ValueError: initial_value must have a shape specified:

对于行 b0=... 然后,我添加了形状信息:

b0 = tf.get_variable(some_name, initializer=a0,shape=[s1,s2])

现在我得到错误:

If initializer is a constant, do not specify shape.

我意识到,这可能与它的动态形状有关。所以,我回去改成了

shape = net.get_shape().as_list()

现在,我收到错误:

ValueError: None values not supported.

在对应于对 s1 的强制转换分配的行中。

我觉得自己 运行 在兜圈子。如何解决这个问题?

我经历过:

您需要在tf.get_variable的参数中指定validate_shape=False,例如

init = tf.random_normal((s1, s2))
tf.get_variable(name, initializer=init, validate_shape=False)