Python Tensorflow:静态和动态形状

Python Tensorflow:静态和动态形状,python,tensorflow,shape,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 sh

由于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:
If initializer is a constant, do not specify shape.
ValueError: None values not supported.
对于第b0行=。然后,我添加了形状信息:

b0 = tf.get_variable(some_name, initializer=a0,shape=[s1,s2])
现在我得到一个错误:

ValueError: initial_value must have a shape specified:
If initializer is a constant, do not specify shape.
ValueError: None values not supported.
我意识到,这可能与它的动态形状有关。所以,我回去换了

shape = net.get_shape().as_list()
现在,我得到一个错误:

ValueError: initial_value must have a shape specified:
If initializer is a constant, do not specify shape.
ValueError: None values not supported.
与向s1分配铸件相对应的直线

我觉得我好像在兜圈子。如何解决这个问题

我经历过:

您需要在
tf.get\u变量的参数中指定
validate\u shape=False
,例如

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

我必须应用完全连接层后,一些操作在此。这会引发错误:应该定义
densed
输入的最后一个维度。找到
。我想我现在必须硬编码图像大小和批量大小以获得临时解决方案。@edit我想除了动态变量形状初始化之外,您还有一个新问题,可能值得在新问题中详细解释。