本篇文章給大家分享的是有關(guān)使用TensorFlow怎么查看ckpt中的變量,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。
成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比渾江網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式渾江網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋渾江地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。查看TensorFlow中checkpoint內(nèi)變量的幾種方法
查看ckpt中變量的方法有三種:
在有model的情況下,使用tf.train.Saver進(jìn)行restore
使用tf.train.NewCheckpointReader直接讀取ckpt文件,這種方法不需要model。
使用tools里的freeze_graph來(lái)讀取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來(lái)讀取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來(lái)讀取ckpt中變量時(shí),model和ckpt必須匹配。
2. 使用tf.train.NewCheckpointReader直接讀取ckpt文件里的變量,使用tools.inspect_checkpoint里的print_tensors_in_checkpoint_file函數(shù)打印ckpt里的東西
#使用NewCheckpointReader來(lái)讀取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來(lái)讀取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。
以上就是使用TensorFlow怎么查看ckpt中的變量,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。