我想預先使用形狀未知的變量,它會不時變化(儘管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