次に QAT のヒントをいくつか示します。
- Keras モデル
-
Keras モデルでは、浮動小数点トレーニング グラフを作成する前に
backend.set_learning_phase(1)
を設定し、浮動小数点評価グラフを作成する前にbackend.set_learning_phase(0)
を設定してください。さらに、backend.clear_session()
の後にbackend.set_learning_phase()
を呼び出す必要があります。Tensorflow1.x QAT API は、Tensorflow ネイティブ トレーニング API 用に設計されています。QAT 内で Kerasmodel.fit()
API を使用すると、一部のノードが実行されないという問題が発生することがあります。Tensorflow2 量子化ツールの QAT API と Keras API を組み合わせて使用することを推奨します。 - ドロップアウト
- QAT は、ドロップアウトを使用しない方が効果が高いことが実験からわかっています。このツールは現在、ドロップアウトを使用した微調整をサポートしていないため、QAT を実行する前にドロップアウトを削除するか、または無効にする必要があります。ドロップアウトを無効にするには、tf.layers を使用する場合は
is_training=false
に設定し、tf.keras.layers を使用する場合はtf.keras.backend.set_learning_phase(0)
を呼び出します。 - ハイパーパラメーター
- QAT は浮動小数点モデルのトレーニング/微調整によく似ているため、浮動小数点モデルのトレーニング/微調整の手法も必要とされます。調整する必要がある重要なパラメーターとして、オプティマイザーのタイプ、学習曲線などが挙げられます。