将Keras模型转换为TensorFlow protobuf
c++
keras
tensorflow
6
0

我们目前正在使用Keras训练各种神经网络,这是理想的选择,因为它具有良好的界面并且相对易于使用,但是我们希望能够将其应用于我们的生产环境。

不幸的是,生产环境是C ++,因此我们的计划是:

  • 使用TensorFlow后端将模型保存到protobuf
  • 将我们的生产代码链接到TensorFlow,然后加载到protobuf中

不幸的是,我不知道如何从Keras访问TensorFlow保存实用程序,该实用程序通常保存为HDF5和JSON。如何保存到protobuf?

参考资料:
Stack Overflow
收藏
评论
共 4 个回答
高赞 时间 活跃

将您的keras模型另存为HDF5文件。

然后,您可以使用以下代码进行转换:

from keras import backend as K
from tensorflow.python.framework import graph_util
from tensorflow.python.framework import graph_io

weight_file_path = 'path to your keras model'
net_model = load_model(weight_file_path)
sess = K.get_session()

constant_graph = graph_util.convert_variables_to_constants(sess, sess.graph.as_graph_def(), 'name of the output tensor')
graph_io.write_graph(constant_graph, 'output_folder_path', 'output.pb', as_text=False)
print('saved the constant graph (ready for inference) at: ', osp.join('output_folder_path', 'output.pb'))

这是处理多个输入和多个输出情况的示例代码: https : //github.com/amir-abdi/keras_to_tensorflow

收藏
评论

您可以通过以下方式访问TensorFlow后端:

import keras.backend.tensorflow_backend as K

然后您可以调用任何TensorFlow实用程序或函数,例如:

K.tf.ConfigProto
收藏
评论

似乎在Francois Chollet在Keras博客上发布的“ Keras作为TensorFlow的简化接口:教程”中得到了回答。

特别是, 第二部分,“在TensorFlow中使用Keras模型”

收藏
评论

如果您不需要在要部署到的环境中使用GPU,也可以使用我的库,称为节俭型。它在GitHub上可用,并以MIT许可证发布: https : //github.com/Dobiasd/frugally-deep

节俭的深度允许直接在C ++中对已训练的Keras模型进行正向传递,而无需链接到TensorFlow或任何其他后端。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号