2016-08-17 89 views
2

我正在使用張量流進行梯度正常分類。僅訓練張量流中的一些變量

train_op = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost) 

這裏cost成本函數我在優化已經使用。

sess.run(train_op, feed_dict) 

而與此,在成本函數的所有變量將被以最小的成本更新: 發動會話圖形後,圖形可以作爲餵食。

這是我的問題。如何在訓練時只更新成本函數中的一些變量..?有沒有辦法將創建的變量轉換爲常量或什麼..?

+0

如果你定義自己的成本函數,可以硬寫,你要不斷的變量,而不是更新他們。我不知道你是否明白我的意思。 – CoMartel

+3

您可以將'GradientDescentOptimizer.minimize()'的變量列表作爲var_list(參見https://www.tensorflow.org/versions/r0.10/api_docs/python/train.html#usage和https ://www.tensorflow.org/versions/r0.10/api_docs/python/train.html#Optimizer.minimize),這是否做你想要的? – fwalch

+2

查看http://stackoverflow.com/questions/35298326/freeze-some-variables-scopes-in-tensorflow-stop-gradient-vs-passing-variables?rq=1 – jean

回答

0

有幾個很好的答案,這個問題應該已經被關閉: stackoverflow Quora

只是爲了避免另一次點擊的人到達這裏:

的最小化tensorflow優化的函數需要一個var_list參數爲此目的:

first_train_vars = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, 
            "scope/prefix/for/first/vars") 
first_train_op = optimizer.minimize(cost, var_list=first_train_vars) 

second_train_vars = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, 
             "scope/prefix/for/second/vars")      
second_train_op = optimizer.minimize(cost, var_list=second_train_vars) 

我把它從mrry

要得到名稱列表,你應該使用,而不是"scope/prefix/for/second/vars"你可以使用:

tf.get_default_graph().get_collection_ref(tf.GraphKeys.TRAINABLE_VARIABLES) 
相關問題