Tensorflow 自定義loss的情況下初始化部分變量方式
一般情況下,tensorflow里面變量初始化過程為:
#variables ........... #..................... init = tf.initialize_all_variables() sess.run(init)
這里 tf.initialize_all_variables() 會初始化所有的變量。
實際過程中,假設有a, b, c三個變量,其中a已經(jīng)被初始化了,只想單獨初始化b,c,那么:
#variables ... ... init = tf.variables_initializer([b,c]) sess.run(init)
此外,如果自行修改了optimizer,如下代碼就會報錯:
#definition of variables a, b, c ... .... my_optimizer = tf.train.RMSProp(learning_rate = 0.1).minimize(my_cost) init = tf.variables_initializer([b,c]) sess.run(init)
這是因為自己定義的optimizer會生成新的variables,但是在init里面并沒有初始化,所以無法訪問,會報錯。解決方法如下:
a = tf.Variables(...) #line N temp = set(tf.all_variables()) b = tf.Variables(...) c = tf.Variables(...) #definition of my optimizer optimizer = tf.train....... init = tf.variables_initializer(set(tf.all_varialbles())-temp) # line M sess.run(init)
首先,temp = set(tf.all_variables()) 將該行(line N)代碼之前的所有變量保存在temp中,接下來定義變量b, c,以及自定義的optimizer,然后 set(tf.all_varialbles()存儲了改行(line M)之前的所有變量(包括optimizer生成的變量以及temp中所含的變量),set(tf.all_varialbles())-temp相減得到line N~M這幾行定義的變量。
以上這篇Tensorflow 自定義loss的情況下初始化部分變量方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
如何在python開發(fā)工具PyCharm中搭建QtPy環(huán)境(教程詳解)
這篇文章主要介紹了在python開發(fā)工具PyCharm中搭建QtPy環(huán)境,本文通過圖文并茂的形式給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02教你怎么用PyCharm為同一服務器配置多個python解釋器
當我們在服務器上創(chuàng)建了多個虛擬環(huán)境時,也可以在 PyCharm 中配置這些虛擬環(huán)境,方便不同的項目使用不同的環(huán)境,然而按照網(wǎng)上教程添加多個python解釋器后,PyCharm會自動幫我們創(chuàng)建多個重復的服務器,本文主要給出該問題的解決方法,同時也對添加解釋器做一個詳細的講解2021-05-05django框架用戶權(quán)限中的session緩存到redis中的方法
今天小編就為大家分享一篇django框架用戶權(quán)限中的session緩存到redis中的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08