在TensorFlow中访问预训练模型的权重(名称和值)

时间:2018-06-25 02:45:35

标签: python-3.x tensorflow object-detection

神经网络的定量分析需要首先加载所有变量 TensorFlow。因此,我导入了SSDLite MobileNet v2模型的检查点并恢复了权重。但是我无法通过使用某些功能来获得其权重或变量,例如get_all_coolection_keysget_collection。该代码段如下:

import tensorflow as tf
import numpy as np
model_dir = 'ssdlite_mobilenet_v2_coco_2018_05_09'
checkpoint = tf.train.get_checkpoint_state(model_dir)
input_checkpoint = checkpoint.model_checkpoint_path # ssdlite_mobilenet_v2_coco_2018_05_09/model.ckpt
sess =  tf.Session()
tf.reset_default_graph()
saver = tf.train.import_meta_graph(input_checkpoint + '.meta')
graph = tf.get_default_graph()
saver.restore(sess, input_checkpoint)
# INFO:tensorflow:Restoring parameters from ssdlite_mobilenet_v2_coco_2018_05_09/model.ckpt   
graph_collections_keys = graph.get_all_collection_keys()
print(graph_collections_keys) # []
hyperparameters = tf.get_collection('hyperparameters')
print(len(hyperparameters)) # 0
model_variables = tf.get_collection(tf.GraphKeys.MODEL_VARIABLES)
print(len(model_variables)) # 0

那么,如何在TensorFlow中访问预训练模型的权重(名称和值)?

1 个答案:

答案 0 :(得分:0)

朋友,您无法恢复变量名称,权重已尽其所能。同样在tensorflow或一般代码中,您获得的唯一还原选项是saver。这还取决于您要还原的数据类型是.npy文件,然后np.load可以还原。