63

Keras (Theano を使用) を使用して CNN モデルをトレーニングしています。私のC++アプリケーションでそれをどのように使用できるか知っている人はいますか? 誰かが似たようなことを試しましたか?ネットワーク関数を使用して C++ コードを生成する Python コードを作成することを考えています - 何か提案はありますか?

ここで、C++ で Tensorflow Keras モデルを使用する方法について同様の質問を見つけましたが、回答はありません。

4

7 に答える 7

60

私自身の質問に答えて解決策を得るために、keras2cppという単純な C++ ソリューションを作成しました (そのコードは github で入手できます)。

このソリューションでは、ネットワーク アーキテクチャ (json) と重み (hdf5) を保存します。次に、提供されたスクリプトを使用して、ネットワークをプレーン テキスト ファイルにダンプできます。取得したテキスト ファイルは、純粋な C++ コードのネットワークで使用できます。Python ライブラリまたは hdf5 への依存関係はありません。theano および tensorflow バックエンドで動作するはずです。

于 2016-05-22T20:59:50.417 に答える
3

最も簡単な方法は、C++ から読み取ることができるバイナリまたはHDF5ファイルに予測を書き込む Python スクリプトへのシステム コールを作成することです。Python を C++ に直接統合することもできます。

これを簡単にデプロイして配布する必要がある場合は、 Anacondaなどの自己完結型の Python インストールを調べることができますが、最善の策は、Keras を避け、Caffeまたは Tensorflow への C++ インターフェイスを使用することです。C++ からの使用は標準ではないため、Tensorflow はお勧めしません。この議論を参照してください。Caffe は間違いなく2 番目に人気のあるディープ ラーニング ライブラリであるため、間違いはありません。

于 2016-05-01T06:26:09.537 に答える
3

私にも同様のニーズがあり、C++ アプリケーションに Keras モデルを埋め込みたいと考えていましたが、独自のライブラリを作成することにしました: Kerasify

Kerasify の設計目標:

  • 画像処理との互換性 Theano バックエンドを使用して Keras によって生成されたシーケンシャル ネットワーク。(行列の列/行の順序を切り替えると、Tensorflow で動作する可能性があります)。
  • 外部依存関係なし、標準ライブラリ、C++11 機能 OK。
  • すばやく読み取ることができるバイナリ形式でディスクに格納されたモデル。
  • キャッシュ パフォーマンスを向上させるために、連続したブロックでメモリに格納されたモデル。
  • 例外をスローせず、エラー時に bool のみを返します。
  • CPUのみ、GPUなし

サンプル コード、単体テストなどは github リンクにあります。完全ではありません。私が使用している Keras 関数の狭いサブセットしかサポートしていませんが、少し努力すれば拡張できるはずです。

于 2016-11-08T06:05:59.370 に答える