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)
由于 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)