我想预先使用形状未知的变量,它会不时变化(尽管ndim已知且已修复)。动态形状优化变量
我宣布它像:
initializer = tf.random_uniform_initializer()
shape = (s0, s1, s2) # these are symbolic vars
foo_var = tf.Variable(initializer(shape=shape), name="foo", validate_shape=False)
这似乎当我创建计算图最多,我想优化w.r.t.点工作这个变量,即:
optimizer = tf.train.AdamOptimizer(learning_rate=0.1, epsilon=1e-4)
optim = optimizer.minimize(loss, var_list=[foo_var])
失败在优化中的一些功能create_zeros_slot
它似乎取决于静态的形状信息(它使用primary.get_shape().as_list()
)。 (我上报了here。)
那么,使用优化器只能与静态形状的变量一起工作?
I.e.对于变量形状的每一个变化,我需要重建计算图? 或者有什么方法可以避免娱乐?
优化期间,它不会改变。在某些情况下,我会将其明确重置为一个新的值,该值可能会有另一种形状。然后我想再次进行优化。我不想每次重新创建计算图。 – Albert
如果优化不影响它,请尝试将该变量设置为在创建时不可训练。 – chasep255
但我想特别优化这个变量。 – Albert