這篇文章給大家介紹使用TensorFlow怎么實(shí)現(xiàn)權(quán)值更新,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
公司專注于為企業(yè)提供成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、商城網(wǎng)站開發(fā),微信平臺(tái)小程序開發(fā),軟件按需定制開發(fā)等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。憑借多年豐富的經(jīng)驗(yàn),我們會(huì)仔細(xì)了解各客戶的需求而做出多方面的分析、設(shè)計(jì)、整合,為客戶設(shè)計(jì)出具風(fēng)格及創(chuàng)意性的商業(yè)解決方案,創(chuàng)新互聯(lián)更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務(wù)。一. MovingAverage權(quán)值滑動(dòng)平均更新
1.1 示例代碼:
def create_target_q_network(self,state_dim,action_dim,net): state_input = tf.placeholder("float",[None,state_dim]) action_input = tf.placeholder("float",[None,action_dim]) ema = tf.train.ExponentialMovingAverage(decay=1-TAU) target_update = ema.apply(net) target_net = [ema.average(x) for x in net] layer1 = tf.nn.relu(tf.matmul(state_input,target_net[0]) + target_net[1]) layer2 = tf.nn.relu(tf.matmul(layer1,target_net[2]) + tf.matmul(action_input,target_net[3]) + target_net[4]) q_value_output = tf.identity(tf.matmul(layer2,target_net[5]) + target_net[6]) return state_input,action_input,q_value_output,target_update def update_target(self): self.sess.run(self.target_update)
其中,TAU=0.001,net是原始網(wǎng)絡(luò)(該示例代碼來(lái)自DDPG算法,經(jīng)過(guò)滑動(dòng)更新后的target_net是目標(biāo)網(wǎng)絡(luò) )
第一句 tf.train.ExponentialMovingAverage,創(chuàng)建一個(gè)權(quán)值滑動(dòng)平均的實(shí)例;
第二句 apply創(chuàng)建所訓(xùn)練模型參數(shù)的一個(gè)復(fù)制品(shadow_variable),并對(duì)這個(gè)復(fù)制品增加一個(gè)保留權(quán)值滑動(dòng)平均的op,函數(shù)average()或average_name()可以用來(lái)獲取最終這個(gè)復(fù)制品(平滑后)的值的。
更新公式為:
shadow_variable = decay * shadow_variable + (1 - decay) * variable
在上述代碼段中,target_net是shadow_variable,net是variable
1.2 tf.train.ExponentialMovingAverage.apply(var_list=None)
var_list必須是Variable或Tensor形式的列表。這個(gè)方法對(duì)var_list中所有元素創(chuàng)建一個(gè)復(fù)制,當(dāng)其是Variable類型時(shí),shadow_variable被初始化為variable的初值,當(dāng)其是Tensor類型時(shí),初始化為0,無(wú)偏。
函數(shù)返回一個(gè)進(jìn)行權(quán)值平滑的op,因此更新目標(biāo)網(wǎng)絡(luò)時(shí)單獨(dú)run這個(gè)函數(shù)就行。
1.3 tf.train.ExponentialMovingAverage.average(var)
用于獲取var的滑動(dòng)平均結(jié)果。
二. tf.train.Optimizer更新網(wǎng)絡(luò)權(quán)值
2.1 tf.train.Optimizer
tf.train.Optimizer允許網(wǎng)絡(luò)通過(guò)minimize()損失函數(shù)自動(dòng)進(jìn)行權(quán)值更新,此時(shí)tf.train.Optimizer.minimize()做了兩件事:計(jì)算梯度,并把梯度自動(dòng)更新到權(quán)值上。
此外,tensorflow也允許用戶自己計(jì)算梯度,并做處理后應(yīng)用給權(quán)值進(jìn)行更新,此時(shí)分為以下三個(gè)步驟:
1.利用tf.train.Optimizer.compute_gradients計(jì)算梯度
2.對(duì)梯度進(jìn)行自定義處理
3.利用tf.train.Optimizer.apply_gradients更新權(quán)值
tf.train.Optimizer.compute_gradients(loss, var_list=None, gate_gradients=1, aggregation_method=None, colocate_gradients_with_ops=False, grad_loss=None)
返回一個(gè)(梯度,權(quán)值)的列表對(duì)。
tf.train.Optimizer.apply_gradients(grads_and_vars, global_step=None, name=None)
返回一個(gè)更新權(quán)值的op,因此可以用它的返回值ret進(jìn)行sess.run(ret)
2.2 其它
此外,tensorflow還提供了其它計(jì)算梯度的方法:
? tf.gradients(ys, xs, grad_ys=None, name='gradients', colocate_gradients_with_ops=False, gate_gradients=False, aggregation_method=None)
該函數(shù)計(jì)算ys在xs方向上的梯度,需要注意與train.compute_gradients所不同的地方是,該函數(shù)返回一組dydx dydx的列表,而不是梯度-權(quán)值對(duì)。
其中,gate_gradients是在ys方向上的初始梯度,個(gè)人理解可以看做是偏微分鏈?zhǔn)角髮?dǎo)中所需要的。
? tf.stop_gradient(input, name=None)
該函數(shù)告知整個(gè)graph圖中,對(duì)input不進(jìn)行梯度計(jì)算,將其偽裝成一個(gè)constant常量。比如,可以用在類似于DQN算法中的目標(biāo)函數(shù):
cost=|r+Q next ?Q current | cost=|r+Qnext?Qcurrent|
可以事先聲明
y=tf.stop_gradient(r+Q next r+Qnext)
關(guān)于使用TensorFlow怎么實(shí)現(xiàn)權(quán)值更新就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
當(dāng)前標(biāo)題:使用TensorFlow怎么實(shí)現(xiàn)權(quán)值更新-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)網(wǎng)址:http://chinadenli.net/article28/djjpcp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計(jì)、響應(yīng)式網(wǎng)站、搜索引擎優(yōu)化、移動(dòng)網(wǎng)站建設(shè)、全網(wǎng)營(yíng)銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容