詳解TensorFlow查看ckpt中變量的幾種方法
查看TensorFlow中checkpoint內(nèi)變量的幾種方法
查看ckpt中變量的方法有三種:
- 在有model的情況下,使用tf.train.Saver進(jìn)行restore
- 使用tf.train.NewCheckpointReader直接讀取ckpt文件,這種方法不需要model。
- 使用tools里的freeze_graph來讀取ckpt
注意:
- 如果模型保存為.ckpt的文件,則使用該文件就可以查看.ckpt文件里的變量。ckpt路徑為 model.ckpt
- 如果模型保存為.ckpt-xxx-data (圖結(jié)構(gòu))、.ckpt-xxx.index (參數(shù)名)、.ckpt-xxx-meta (參數(shù)值)文件,則需要同時(shí)擁有這三個(gè)文件才行。并且ckpt的路徑為 model.ckpt-xxx
1. 基于model來讀取ckpt文件里的變量
1.首先建立model
2.從ckpt中恢復(fù)變量
with tf.Graph().as_default() as g: #建立model images, labels = cifar10.inputs(eval_data=eval_data) logits = cifar10.inference(images) top_k_op = tf.nn.in_top_k(logits, labels, 1) #從ckpt中恢復(fù)變量 sess = tf.Session() saver = tf.train.Saver() #saver = tf.train.Saver(...variables...) # 恢復(fù)部分變量時(shí),只需要在Saver里指定要恢復(fù)的變量 save_path = 'ckpt的路徑' saver.restore(sess, save_path) # 從ckpt中恢復(fù)變量
注意:基于model來讀取ckpt中變量時(shí),model和ckpt必須匹配。
2. 使用tf.train.NewCheckpointReader直接讀取ckpt文件里的變量,使用tools.inspect_checkpoint里的print_tensors_in_checkpoint_file函數(shù)打印ckpt里的東西
#使用NewCheckpointReader來讀取ckpt里的變量
from tensorflow.python import pywrap_tensorflow
checkpoint_path = os.path.join(model_dir, "model.ckpt")
reader = pywrap_tensorflow.NewCheckpointReader(checkpoint_path) #tf.train.NewCheckpointReader
var_to_shape_map = reader.get_variable_to_shape_map()
for key in var_to_shape_map:
print("tensor_name: ", key)
#print(reader.get_tensor(key))
#使用print_tensors_in_checkpoint_file打印ckpt里的內(nèi)容
from tensorflow.python.tools.inspect_checkpoint import print_tensors_in_checkpoint_file
print_tensors_in_checkpoint_file(file_name, #ckpt文件名字
tensor_name, # 如果為None,則默認(rèn)為ckpt里的所有變量
all_tensors, # bool 是否打印所有的tensor,這里打印出的是tensor的值,一般不推薦這里設(shè)置為False
all_tensor_names) # bool 是否打印所有的tensor的name
#上面的打印ckpt的內(nèi)部使用的是pywrap_tensorflow.NewCheckpointReader所以,掌握NewCheckpointReader才是王道
3.使用tools里的freeze_graph來讀取ckpt
from tensorflow.python.tools import freeze_graph
freeze_graph(input_graph, #=some_graph_def.pb
input_saver,
input_binary,
input_checkpoint, #=model.ckpt
output_node_names, #=softmax
restore_op_name,
filename_tensor_name,
output_graph, #='./tmp/frozen_graph.pb'
clear_devices,
initializer_nodes,
variable_names_whitelist='',
variable_names_blacklist='',
input_meta_graph=None,
input_saved_model_dir=None,
saved_model_tags='serve',
checkpoint_version=2)
#freeze_graph_test.py講述了怎么使用freeze_grapg。
使用freeze_graph可以將圖和ckpt進(jìn)行合并。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
linux 下python多線程遞歸復(fù)制文件夾及文件夾中的文件
這篇文章主要介紹了linux 下python多線程遞歸復(fù)制文件夾及文件夾中的文件,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01
關(guān)于VSCode?配置使用?PyLint?語法檢查器的問題
這篇文章主要介紹了VSCode?配置使用?PyLint?語法檢查器,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06
使用Python實(shí)現(xiàn)對PDF文件進(jìn)行密碼保護(hù)
這篇文章主要為大家詳細(xì)了如何使用Python來實(shí)現(xiàn)PDF文件的密碼保護(hù),以確保只有授權(quán)的用戶可以訪問文檔,文中的示例代碼簡潔易懂,有需要的小伙伴可以參考一下2024-01-01
Python腳本支持OC代碼重構(gòu)模塊調(diào)用關(guān)系分析實(shí)踐
在軟件開發(fā)中,經(jīng)常會(huì)遇到一些代碼問題,例如邏輯結(jié)構(gòu)復(fù)雜、依賴關(guān)系混亂、代碼冗余、不易讀懂的命名等,這些問題可能導(dǎo)致代碼的可維護(hù)性下降,增加維護(hù)成本,同時(shí)也會(huì)影響到開發(fā)效率,本文以Python實(shí)現(xiàn)自動(dòng)化的工具,支持代碼重構(gòu)過程的實(shí)踐2023-10-10
使用npy轉(zhuǎn)image圖像并保存的實(shí)例
這篇文章主要介紹了使用npy轉(zhuǎn)image圖像并保存的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
Python數(shù)據(jù)可視化教程之Matplotlib實(shí)現(xiàn)各種圖表實(shí)例
這篇文章主要給大家介紹了關(guān)于Python數(shù)據(jù)可視化教程之利用Matplotlib實(shí)現(xiàn)各種圖表的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧2019-01-01
Python IDLE 錯(cuò)誤:IDLE''''s subprocess didn''''t make connectio
這篇文章主要介紹了Python IDLE 錯(cuò)誤:IDLE's subprocess didn't make connection 的解決方案的相關(guān)資料,需要的朋友可以參考下2017-02-02

