web-dev-qa-db-ja.com

keras(h5)ファイルをtfliteファイルに変換する方法は?

Keras(h5)ファイルを取得しました。 tfliteに変換する必要がありますか?私は調査しました、最初にh5-> pb-> tfliteを経由する必要があります(h5-tfliteが時々問題を起こすため)

8
user10638958
from tensorflow.contrib import lite
converter = lite.TFLiteConverter.from_keras_model_file( 'model.h5')
tfmodel = converter.convert()
open ("model.tflite" , "wb") .write(tfmodel)

TFLiteConverterを使用して、.h5ファイルを.tfliteファイルに直接変換できます。 これはWindowsでは機能しません。

Windowsの場合、この Google Colabノートブック を使用して変換します。 .h5ファイルをアップロードすると、.tfliteファイルに変換されます。

自分で試してみたい場合は、以下に従ってください。

  1. Google Colab Notebookを作成します。左上の[アップロード]ボタンをクリックして、.h5ファイルをアップロードします。
  2. コードセルを作成し、このコードを挿入します。

    from tensorflow.contrib import lite
    converter = lite.TFLiteConverter.from_keras_model_file( 'model.h5' ) # Your model's name
    model = converter.convert()
    file = open( 'model.tflite' , 'wb' ) 
    file.write( model )
    
  3. セルを実行します。 model.tfliteファイルを取得します。ファイルを右クリックして、「ダウンロード」オプションを選択します。

8
user9477964

このツールを使用してTensorflowに変換します。 Keras to Tensorflow Converter

次に、3つのコードスニペットのいずれか(TFファイルの保存方法に応じて)を使用して、そのファイルをTF-Liteに変換します。

# Converting a GraphDef from session.
converter = lite.TFLiteConverter.from_session(sess, in_tensors, out_tensors)
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)

# Converting a GraphDef from file.
converter = lite.TFLiteConverter.from_frozen_graph(
  graph_def_file, input_arrays, output_arrays)
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)

# Converting a SavedModel.
converter = lite.TFLiteConverter.from_saved_model(saved_model_dir)
tflite_model = converter.convert()
0

TensorflowとKerasの特定のバージョンのみが、すべてのOSで適切に動作します。 tocoコマンドラインも試しましたが、問題もあります。 tensorflow == 1.13.0-rc1およびkeras == 2.1.3を使用します

そして、これが動作した後

from tensorflow.contrib import lite
converter = lite.TFLiteConverter.from_keras_model_file( 'model.h5' ) # Your model's name
model = converter.convert()
file = open( 'model.tflite' , 'wb' ) 
file.write( model )
0
KETAN KANJIYA

考慮すべき要素が1つあります。must変換する前に、学習フェーズを変更する必要があります。ドロップアウトまたはバッチ正規化がある場合、これは非常に重要です。 'Keras model to tflite' または 'kerasモデルをTensorflow pbに変換した後の問題 の議論をご覧ください

0