由于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?
答案 0 :(得分:1)
您需要在validate_shape=False
的参数中指定tf.get_variable
,例如
init = tf.random_normal((s1, s2))
tf.get_variable(name, initializer=init, validate_shape=False)