TensorFlow实现打印每一层的输出
在test.py中可以通过如下代码直接生成带weight的pb文件,也可以通过tf官方的freeze_graph.py将ckpt转为pb文件。
constant_graph=graph_util.convert_variables_to_constants(sess,sess.graph_def,['net_loss/inference/encode/conv_output/conv_output'])
withtf.gfile.FastGFile('net_model.pb',mode='wb')asf:
f.write(constant_graph.SerializeToString())
tf1.0中通过带weight的pb文件与get_tensor_by_name函数可以获取每一层的输出
importos
importos.pathasops
importargparse
importtime
importmath
importtensorflowastf
importglob
importnumpyasnp
importmatplotlib.pyplotasplt
importcv2
os.environ["CUDA_VISIBLE_DEVICES"]="-1"
gragh_path='./model.pb'
image_path='./lvds1901.JPG'
inputtensorname='input_tensor:0'
tensorname='loss/inference/encode/resize_images/ResizeBilinear'
filepath='./net_output.txt'
HEIGHT=256
WIDTH=256
VGG_MEAN=[103.939,116.779,123.68]
withtf.Graph().as_default():
graph_def=tf.GraphDef()
withtf.gfile.GFile(gragh_path,'rb')asfid:
serialized_graph=fid.read()
graph_def.ParseFromString(serialized_graph)
tf.import_graph_def(graph_def,name='')
image=cv2.imread(image_path)
image=cv2.resize(image,(WIDTH,HEIGHT),interpolation=cv2.INTER_CUBIC)
image_np=np.array(image)
image_np=image_np-VGG_MEAN
image_np_expanded=np.expand_dims(image_np,axis=0)
withtf.Session()assess:
ops=tf.get_default_graph().get_operations()
tensor_name=tensorname+':0'
tensor_dict=tf.get_default_graph().get_tensor_by_name(tensor_name)
image_tensor=tf.get_default_graph().get_tensor_by_name(inputtensorname)
output=sess.run(tensor_dict,feed_dict={image_tensor:image_np_expanded})
ftxt=open(filepath,'w')
transform=output.transpose(0,3,1,2)
transform=transform.flatten()
weight_count=0
foriintransform:
ifweight_count%10==0andweight_count!=0:
ftxt.write('\n')
ftxt.write(str(i)+',')
weight_count+=1
ftxt.close()
以上这篇TensorFlow实现打印每一层的输出就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。