在訓練模型,有時需要對某些變數停止梯度更新,比如蒸餾時teacher的weight保持不變,有一種簡單的方式通過scope控制哪些變數是否進行梯度更新,tensorflow的tf.get_collection(key, scope=none)函式獲取需要更新梯度的變數:
var_list = tf.get_collection(tf.graphkeys.trainable_variables, scope=『teacher』)
如果指定key,就返回名稱域(scope)中所有放入『key』的變數的列表,如果不指定scope則返回所有變數。
然後通過optimizer來進行梯度更新:
train_op = optimizer.minimize(self.loss, var_list=update_ops)
這時只會更新帶有teacher的scope變數的權重,而其他的變數則不會進行梯度更新
梯度下降的理解及部分細節
關於網路,我們的目標就是學習到乙個函式,我輸入進x,可以輸出相應的y。我們是通過不斷的訓練來得到這個函式的,那麼怎麼得到呢。首先我們假設這個函式存在,具體的引數可以隨機初始化,然後放入很多的x,讓他去計算得到乙個y。這個y和真實的y是有差距的,所以再假設乙個函式叫損失 代價函式,可以用函式表達出真實...
變數」部分的材料
定址儲存器 本課直接建立在 1.3 第乙個變數的第乙個變數 部分的材料上。在上一節中的變數上,我們討論了乙個事實,即變數是乙個可以用來儲存資訊的記憶體的名稱的事實。簡要概括起來,計算機的隨機訪問儲存器 ram 可供程式使用。當乙個變數被定義時,該變數的一塊記憶體被設定為該變數。記憶體的最小單位是乙個...
對導數(梯度)傳播的理解(上)
導數的鏈式法則的理解,我參考了一篇 文章 hacker s guide to neural networks var x 2,y 5,z 4,h 0.1 whenever value of notation h was changeed,but the following derivateive v...