私たちは現在、Kerasを使用して様々なニューラルネットワークをトレーニングしています。これは、インターフェイスが使いやすく、使いやすいという理由から理想的ですが、環境。KerasモデルをTensorFlowに変換するprotobuf
我々の計画は、にあるので、残念ながら、本番環境は、C++である:
残念ながら、通常はHDF5とJSONに保存されるKerasからTensorFlow保存ユーティリティにアクセスする方法はわかりません。 protobufにどのように保存しますか?
私たちは現在、Kerasを使用して様々なニューラルネットワークをトレーニングしています。これは、インターフェイスが使いやすく、使いやすいという理由から理想的ですが、環境。KerasモデルをTensorFlowに変換するprotobuf
我々の計画は、にあるので、残念ながら、本番環境は、C++である:
残念ながら、通常はHDF5とJSONに保存されるKerasからTensorFlow保存ユーティリティにアクセスする方法はわかりません。 protobufにどのように保存しますか?
次の方法でTensorFlowのバックエンドにアクセスすることができます。そして、あなたが好きなTensorFlowユーティリティまたは関数を呼び出すことができ
import keras.backend.tensorflow_backend as K
:これは"Keras as a simplified interface to TensorFlow: tutorial"に答えているように見える
K.tf.ConfigProto
、にKerasブログを掲載Francois Chollet著。
ケラスモデルを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
あなたがする必要はありませんあなたが展開している環境でGPUを利用すると、私のライブラリを使用することもできます。 https://github.com/Dobiasd/frugally-deep
frugally-deepでは、すでに訓練されたKerasモデルをC++で直接実行することができ、TensorFlowや他のバックエンドとリンクする必要はありません。
RNNをサポートする予定はありますか? RNNを扱う(畳み込みではない)[lwtnn](https://github.com/lwtnn/lwtnn)と面白いオーバーラップ。 – Shep
@Shep将来私はそれらをサポートしたいと思いますが、私はまだ予定していません。 –
Kerasには慣れていませんが、デフォルトグラフを使用している場合は、protobufを 'tf.get_default_graph()。as_graph_def()'として入手できます。 –