目錄TensorFlow學(xué)習(xí)系列(一):初識(shí)TensorFlow TensorFlow學(xué)習(xí)系列(二):形狀和動(dòng)態(tài)維度 TensorFlow學(xué)習(xí)系列(三):保存/恢復(fù)和混合多個(gè)模型 TensorFlow學(xué)習(xí)系列(四):利用神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)泛逼近器(universal approximator) TensorFlow學(xué)習(xí)系列(五):如何使用隊(duì)列和多線程優(yōu)化輸入管道 在學(xué)習(xí)這篇博客之前,,我希望你已經(jīng)掌握了Tensorflow基本的操作,。如果沒(méi)有,,你可以閱讀這篇入門(mén)文章,。 為什么要學(xué)習(xí)模型的保存和恢復(fù)呢,?因?yàn)檫@對(duì)于避免數(shù)據(jù)的混亂無(wú)序是至關(guān)重要的,,特別是在你代碼中的不同圖,。 如何保存和加載模型saver類(lèi)在不同的會(huì)話中,當(dāng)需要將數(shù)據(jù)在硬盤(pán)上面進(jìn)行保存時(shí),,那么我們就可以使用Saver這個(gè)類(lèi),。這個(gè)Saver構(gòu)造類(lèi)允許你去控制3個(gè)目標(biāo):
Saver類(lèi)可以處理你的圖中元數(shù)據(jù)和變量數(shù)據(jù)的保存和恢復(fù),。而我們唯一需要做的是,,告訴Saver類(lèi)我們需要保存哪個(gè)圖和哪些變量。 在默認(rèn)情況下,,Saver類(lèi)能處理默認(rèn)圖中包含的所有變量,。但是,你也可以去創(chuàng)建很多的Saver類(lèi),,去保存你想要的任何子圖,。
當(dāng)你運(yùn)行了上面的程序之后,如果你去看文件夾,,那么你會(huì)發(fā)現(xiàn)文件夾中存在了七個(gè)文件(如下)。在接下來(lái)的博客中,,我會(huì)詳細(xì)解釋這些文件的意義,。目前你只需要知道,模型的權(quán)重是保存在
恢復(fù)操作和其它元數(shù)據(jù)我想分享的最后一個(gè)信息是,Saver將保存與圖有關(guān)聯(lián)的任何元數(shù)據(jù),。這就意味著,,當(dāng)我們恢復(fù)一個(gè)模型的時(shí)候,我們還同時(shí)恢復(fù)了所有與圖相關(guān)的變量,、操作和集合,。 當(dāng)我們恢復(fù)一個(gè)元模型(restore a meta checkpoint)時(shí),實(shí)際上我們執(zhí)行的操作是將恢復(fù)的圖載入到當(dāng)前的默認(rèn)圖中,。所有當(dāng)你完成模型恢復(fù)之后,,你可以在默認(rèn)圖中訪問(wèn)載入的任何內(nèi)容,比如一個(gè)張量,,一個(gè)操作或者集合,。
恢復(fù)權(quán)重請(qǐng)記住,在實(shí)際的環(huán)境中,,真實(shí)的權(quán)重只能存在于一個(gè)會(huì)話中,。也就是說(shuō),,
在新圖中導(dǎo)入預(yù)訓(xùn)練模型至此,你應(yīng)該已經(jīng)明白了如何去保存和恢復(fù)一個(gè)模型,。然而,,我們還可以使用一些技巧去幫助你更快的保存和恢復(fù)一個(gè)模型。比如:
答案是確定的,。但是目前我的做法是先將第一個(gè)圖進(jìn)行保存,然后在另一個(gè)圖中進(jìn)行恢復(fù),。但是這種方案感覺(jué)很笨重,,我不知道是否有更好的方法。 但是這種方法確實(shí)能工作,,除非你想要去重新訓(xùn)練第一個(gè)圖,。在這種情況下,你需要將輸入的梯度重新輸入到第一張圖中的特定的訓(xùn)練步驟中,。我想你已經(jīng)被這種復(fù)雜的方案給逼瘋了把,。:-)
答案當(dāng)然是肯定的,,但是你必須非常小心命名空間,。這種方法有一點(diǎn)好處是,簡(jiǎn)化了一切,。比如,,你可以預(yù)加載一個(gè)VGG-19模型。然后訪問(wèn)圖中的任何節(jié)點(diǎn),,并執(zhí)行你自己的后續(xù)操作,,從而訓(xùn)練一整個(gè)完整的模型。 如果你只想微調(diào)你自己的節(jié)點(diǎn),,那么你可以在你想要的地方中斷梯度,。
References: http:///questions/38947658/tensorflow-saving-into-loading-a-graph-from-a-file http:///questions/33759623/tensorflow-how-to-restore-a-previously-saved-model-python http:///questions/34500052/tensorflow-saving-and-restoring-session?noredirect=1&lq=1 http:///questions/35687678/using-a-pre-trained-word-embedding-word2vec-or-glove-in-tensorflow https://github.com/jtoy/awesome-tensorflow |
|
來(lái)自: 雪柳花明 > 《Tensorflow_API》