生活随笔
收集整理的這篇文章主要介紹了
tensorflow--模型的保存和提取
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
參考:
TensorFlow:保存和提取模型
最全Tensorflow模型保存和提取的方法——附實(shí)例
模型的保存會(huì)覆蓋,后一次保存的模型會(huì)覆蓋上一次保存的模型。最多保存近5次結(jié)果。應(yīng)當(dāng)保存效果最優(yōu)時(shí)候的模型,而不是訓(xùn)練最后一次的模型。所以應(yīng)該在每次進(jìn)行模型性能評(píng)估后與保存的目前最后效果比較,如果性能更好則進(jìn)行模型的保存。模型的復(fù)用,當(dāng)你想用別的性能評(píng)估指標(biāo)的時(shí)候,不需要再次訓(xùn)練模型來(lái)獲得指標(biāo)值,可以提取最優(yōu)模型直接計(jì)算新指標(biāo)的值。
sess
=tf
.InteractiveSession
()
sess
.run
(tf
.global_variables_initializer
())is_train
=False
saver
=tf
.train
.Saver
(max_to_keep
=3)
if is_train
:max_acc
=0f
=open('ckpt/acc.txt','w')for i
in range(100):batch_xs
, batch_ys
= mnist
.train
.next_batch
(100)sess
.run
(train_op
, feed_dict
={x
: batch_xs
, y_
: batch_ys
})val_loss
,val_acc
=sess
.run
([loss
,acc
], feed_dict
={x
: mnist
.test
.images
, y_
: mnist
.test
.labels
})print('epoch:%d, val_loss:%f, val_acc:%f'%(i
,val_loss
,val_acc
))f
.write
(str(i
+1)+', val_acc: '+str(val_acc
)+'\n')if val_acc
>max_acc
:max_acc
=val_accsaver
.save
(sess
,'ckpt/mnist.ckpt',global_step
=i
+1)f
.close
()
else:model_file
=tf
.train
.latest_checkpoint
('ckpt/')saver
.restore
(sess
,model_file
)val_loss
,val_acc
=sess
.run
([loss
,acc
], feed_dict
={x
: mnist
.test
.images
, y_
: mnist
.test
.labels
})print('val_loss:%f, val_acc:%f'%(val_loss
,val_acc
))
sess
.close
()
實(shí)操:
說(shuō)明:
Social Attentional Memory Network 是一個(gè)推薦系統(tǒng)的模型,代碼中沒(méi)有模型保存和提取操作,數(shù)據(jù)量也算是小的,可以下載下來(lái)練習(xí)一下如何實(shí)際操作。SAMN 是我用這個(gè)模型進(jìn)行的練習(xí),可以參考,代碼后面標(biāo)注 lly 的是我寫(xiě)的或者修改的內(nèi)容。
步驟:
先在原代碼的主目錄的下面建一個(gè)文件夾 model 。第一次進(jìn)行訓(xùn)練,進(jìn)入目錄執(zhí)行 python SAMN.py ,其中參數(shù) is_train = True。
訓(xùn)練完后發(fā)現(xiàn)model文件夾下面多了五個(gè)模型,最后一次保存的模型為最后模型,出現(xiàn)在第171次迭代的時(shí)候,即epoch=170
然后在控制臺(tái)可以看到,epoch=170時(shí)候的評(píng)估結(jié)果:
迭代第 166 次的損失為:26.586210:迭代第 167 次的損失為:26.567725:迭代第 168 次的損失為:26.586499:迭代第 169 次的損失為:26.571110:迭代第 170 次的損失為:26.668282:recall--------------------------------------------------------------------------------0.16846666666666665 0.19796666666666665 0.22703333333333334 0.24936666666666668 0.2713666666666667ndcg----------------------------------------------------------------------------------0.103169807535364 0.11131981364691529 0.11824016391770284 0.12317271387061263 0.12777428228959994save epoch 170
第二次使用保存好的模型,先將 SAMN.py 文件的參數(shù) is_train 改為 False,再執(zhí)行文件。
執(zhí)行完后可以看到控制臺(tái)輸出的評(píng)估結(jié)果和之前訓(xùn)練的時(shí)候的結(jié)果一樣,證明操作成功。(最優(yōu)結(jié)果我只保留了k=[10, 20, 50]的情況)
總結(jié)
以上是生活随笔為你收集整理的tensorflow--模型的保存和提取的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。