InceptionV3模型迁移学习的过程中,因为需要获取不同层次tensor的值,所以需要获取各层的name。之后才可以在迁移学习的过程中根据不同的层次输出结果,重新训练相应的模型
以下代码可以实现的功能:
tensorflow重新载入google提供的inceptionV3的pb模型文件 (不是cpkt模型)
读取pb文件的结构并print出tensor的name和值
存入txt文件中
#读取pb模型并print出tensor的name和值到txt文件中
import tensorflow as tf
from tensorflow.python.framework import graph_util
tf.reset_default_graph()#重置计算图
logdir="E:\DeepLearning\Git\cnn\inception_dec_2015\\"
output_graph_path = logdir +'tensorflow_inception_graph.pb'
doc=open('inceptionV3_tensorName.txt','w') #建立写入文件的文件,'w'为写入模式
with tf.Session() as sess:
# with tf.gfile.FastGFile(output_graph_path, 'rb') as f:
# graph_def = tf.GraphDef()
# graph_def.ParseFromString(f.read())
# sess.graph.as_default()
# tf.import_graph_def(graph_def, name='')
tf.global_variables_initializer().run()
output_graph_def = tf.GraphDef()
graph = tf.get_default_graph() #获得默认的图
with open(output_graph_path, "rb") as f:
output_graph_def.ParseFromString(f.read())
_ = tf.import_graph_def(output_graph_def, name="")
print("%d ops in the final graph." % len(output_graph_def.node)) #得到当前图有几个操作节点
summaryWriter = tf.summary.FileWriter('log_graph/', graph) #在log_graph文件夹下生产日志文件,可以在tensorboard中可视化模型
for op in graph.get_operations():
print(op.name, op.values(),sep=',',file=doc) #直接写入txt文件中
print(op.name, op.values(),sep=',') #print出tensor的name和值
doc.close