Tensorflow:静态和动态形状

时间:2017-07-09 21:30:31

标签: python tensorflow 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的行。

我觉得我在圈子里跑来跑去。如何解决这个问题?

我经历过: How to understand static shape and dynamic shape in TensorFlow?

1 个答案:

答案 0 :(得分:1)

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

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