【发布时间】:2017-05-25 23:03:08
【问题描述】:
所以,根据documentation,我们可以使用 tf.assign 和 validate_shape=False 来改变形状。它确实改变了变量内容的形状,但是您可以从 get_shape() 获得的形状不会得到更新。例如:
>>> a = tf.Variable([1, 1, 1, 1])
>>> sess.run(tf.global_variables_initializer())
>>> tf.assign(a, [[1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1]], validate_shape=False).eval()
array([[1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1]], dtype=int32)
>>> a.get_shape()
TensorShape([Dimension(4)])
很烦人的是,网络的后面层的形状基于这个变量的 get_shape() 值。因此,即使实际形状是正确的,Tensorflow 也会抱怨尺寸不匹配。那么关于如何更新每个变量的“相信”形状有什么想法吗?
【问题讨论】:
-
set_shape 可能吗?
-
set_shape将尝试根据现有形状信息进行验证。我会在创建变量时设置validate_shape=False,在这种情况下,静态形状信息将完全未知(如果您愿意,可以使用set_shape对其进行细化)。 -
我试试看。谢谢!
标签: tensorflow