tensorflow 恢復(fù)指定層與不同層指定不同學(xué)習(xí)率的方法
更新時間:2018年07月26日 10:34:02 作者:跬步達千里
今天小編就為大家分享一篇tensorflow 恢復(fù)指定層與不同層指定不同學(xué)習(xí)率的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
如下所示:
#tensorflow 中從ckpt文件中恢復(fù)指定的層或?qū)⒅付ǖ膶硬贿M行恢復(fù):
#tensorflow 中不同的layer指定不同的學(xué)習(xí)率
with tf.Graph().as_default():
#存放的是需要恢復(fù)的層參數(shù)
variables_to_restore = []
#存放的是需要訓(xùn)練的層參數(shù)名,這里是沒恢復(fù)的需要進行重新訓(xùn)練,實際上恢復(fù)了的參數(shù)也可以訓(xùn)練
variables_to_train = []
for var in slim.get_model_variables():
excluded = False
for exclusion in fine_tune_layers:
#比如fine tune layer中包含logits,bottleneck
if var.op.name.startswith(exclusion):
excluded = True
break
if not excluded:
variables_to_restore.append(var)
#print('var to restore :',var)
else:
variables_to_train.append(var)
#print('var to train: ',var)
#這里省略掉一些步驟,進入訓(xùn)練步驟:
#將variables_to_train,需要訓(xùn)練的參數(shù)給optimizer 的compute_gradients函數(shù)
grads = opt.compute_gradients(total_loss, variables_to_train)
#這個函數(shù)將只計算variables_to_train中的梯度
#然后將梯度進行應(yīng)用:
apply_gradient_op = opt.apply_gradients(grads, global_step=global_step)
#也可以直接調(diào)用opt.minimize(total_loss,variables_to_train)
#minimize只是將compute_gradients與apply_gradients封裝成了一個函數(shù),實際上還是調(diào)用的這兩個函數(shù)
#如果在梯度里面不同的參數(shù)需要不同的學(xué)習(xí)率,那么可以:
capped_grads_and_vars = []#[(MyCapper(gv[0]), gv[1]) for gv in grads_and_vars]
#update_gradient_vars是需要更新的參數(shù),使用的是全局學(xué)習(xí)率
#對于不是update_gradient_vars的參數(shù),將其梯度更新乘以0.0001,使用基本上不動
for grad in grads:
for update_vars in update_gradient_vars:
if grad[1]==update_vars:
capped_grads_and_vars.append((grad[0],grad[1]))
else:
capped_grads_and_vars.append((0.0001*grad[0],grad[1]))
apply_gradient_op = opt.apply_gradients(capped_grads_and_vars, global_step=global_step)
#在恢復(fù)模型時:
with sess.as_default():
if pretrained_model:
print('Restoring pretrained model: %s' % pretrained_model)
init_fn = slim.assign_from_checkpoint_fn(
pretrained_model,
variables_to_restore)
init_fn(sess)
#這樣就將指定的層參數(shù)沒有恢復(fù)
以上這篇tensorflow 恢復(fù)指定層與不同層指定不同學(xué)習(xí)率的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python中scipy.stats產(chǎn)生隨機數(shù)實例講解
在本篇文章里小編給大家分享的是一篇關(guān)于python中scipy.stats產(chǎn)生隨機數(shù)實例講解內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。2021-02-02
如何使用Flask-Migrate拓展數(shù)據(jù)庫表結(jié)構(gòu)
這篇文章主要介紹了如何使用Flask-Migrate拓展數(shù)據(jù)庫表結(jié)構(gòu),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-07-07
pybaobabdt庫基于python的決策樹隨機森林可視化工具使用
這篇文章主要為大家介紹了pybaobabdt庫基于python的決策樹隨機森林可視化工具使用探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2024-02-02
Python字符串字母大小寫轉(zhuǎn)換的各種情況詳析
在使用python語言開發(fā)中經(jīng)常會碰到,需要大寫轉(zhuǎn)小寫,小寫轉(zhuǎn)換大寫,甚至字符串中的單詞首字母大寫,以及字符串手字字母大寫的問題,下面這篇文章主要給大家介紹了關(guān)于Python字符串字母大小寫轉(zhuǎn)換的相關(guān)資料,需要的朋友可以參考下2022-05-05
Pytorch中torch.repeat_interleave()函數(shù)使用及說明
這篇文章主要介紹了Pytorch中torch.repeat_interleave()函數(shù)使用及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01
Python使用Matplotlib進行圖案填充和邊緣顏色分離的三種方法
Matplotlib是Python中功能強大的繪圖庫,允許廣泛的自定義選項,一個常見的要求是分離出圖中的圖案填充和邊緣顏色,默認(rèn)情況下,Matplotlib中的填充顏色與邊緣顏色相關(guān)聯(lián),但有一些方法可以獨立自定義這些顏色,本文將深入研究如何實現(xiàn)這一點的技術(shù)細(xì)節(jié),并提供分步說明和示例2025-01-01
python使用jpype導(dǎo)入多個Jar的異常問題及解決
這篇文章主要介紹了python使用jpype導(dǎo)入多個Jar的異常問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12

