我们目前正在使用Keras训练各种神经网络,这是理想的,因为它具有良好的界面并且相对易于使用,但我们希望能够在我们的生产环境中应用它们。
不幸的是,生产环境是C ++,所以我们的计划是:
不幸的是,我不知道如何从Keras访问TensorFlow保存实用程序,它通常保存为HDF5和JSON。如何保存到protobuf?
答案 0 :(得分:6)
如果您不需要在正在部署的环境中使用GPU,您也可以使用我的库,名为frugally-deep。它可以在GitHub上获得,并在MIT许可证下发布:https://github.com/Dobiasd/frugally-deep
节俭深度允许直接在C ++中对已经训练过的Keras模型进行前进传递,而无需链接TensorFlow或任何其他后端。
答案 1 :(得分:4)
似乎可以在"Keras as a simplified interface to TensorFlow: tutorial"中回答,由Francois Chollet发布在 The Keras Blog 上。
答案 2 :(得分:3)
您可以通过以下方式访问TensorFlow后端:
import keras.backend.tensorflow_backend as K
然后您可以调用任何TensorFlow实用程序或函数,如:
K.tf.ConfigProto
答案 3 :(得分:2)
将您的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
答案 4 :(得分:0)
请确保您更改了 keras后端的学习阶段,以存储适当的图层值(例如,辍学或批处理规范化)。这是一个discussion。