【问题标题】:Freeze TensorFlow by using dense layer as last layer通过使用密集层作为最后一层来冻结 TensorFlow
【发布时间】:2017-09-18 16:21:47
【问题描述】:

操作系统:ubuntu 16.04.1 TensorFlow 版本:1.3.0

试图冻结 TensorFlow 模型(以便它可以被 opencv dnn 加载),但它总是返回错误消息

AssertionError:regression_output 不在图中

最少代码:

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import numpy as np
import tensorflow as tf

features = {'x' : tf.placeholder(tf.float32, [None, 128, 128, 2], name = 'input')}        
model = tf.reshape(features['x'], [-1, 128*128*2])
model = tf.layers.dense(inputs = model, units = 8, name = 'regression_output')

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())

    saver = tf.train.Saver()
    saver.save(sess, 'reshape.ckpt')
    tf.train.write_graph(sess.graph.as_graph_def(), "", 'graph.pb')

命令:

python3 ~/.keras2/lib/python3.5/site-packages/tensorflow/python/tools/freeze_graph.py --input_graph=graph.pb --input_checkpoint=reshape.ckpt --output_graph=frozen_graph.pb --output_node_names=regression_output

【问题讨论】:

    标签: python opencv tensorflow


    【解决方案1】:

    --output_node_names=regression_output 但保存的模型中没有regression_output

    输出的名称是regression_output/BiasAdd。所以这个命令

    python /usr/local/lib/python2.7/dist-packages/tensorflow/python/tools/freeze_graph.py --input_graph=graph.pb --input_checkpoint=reshape.ckpt --output_graph=frozen_graph.pb --output_node_names=regression_output/BiasAdd
    

    可以在python2.7下工作。

    【讨论】:

    • 谢谢,它的工作原理,又一个奇怪的TensorFlow设计,我希望有一天会有另一个丰富的功能,易于部署和易于使用的深度学习库出来并取代像TensorFlow这样过于复杂的框架.
    猜你喜欢
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    • 2022-07-25
    • 2018-02-23
    • 2017-07-27
    相关资源
    最近更新 更多