次のコードは、vai_q_tensorflow2 API を使用してトレーニング後の量子化を実行する方法を示しています。完全なサンプルは、ここにあります。
model = tf.keras.models.load_model('float_model.h5')
from tensorflow_model_optimization.quantization.keras import vitis_quantize
quantizer = vitis_quantize.VitisQuantizer(model)
quantized_model = quantizer.quantize_model(calib_dataset=calib_dataset,
calib_steps=100,
calib_batch_size=10,
**kwargs)
- calib_dataset
-
calib_dataset
は、キャリブレーション プロセス中に使用される代表的なキャリブレーション データセットです。これはeval_dataset
、train_dataset
、またはその他のデータセットの全体または一部から取得できます。 - calib_steps
-
calib_steps
は、キャリブレーションの全ステップ数です。デフォルトでは、変数は None に設定されます。calib_dataset
がtf.data dataset
、ジェネレーター、またはkeras.utils.Sequence
インスタンスのいずれかで、ステップ数が None の場合、データセットが完全になくなるまでキャリブレーションが続行されます。配列入力はこの引数をサポートしていません。 - calib_batch_size
-
calib_batch_size
は、キャリブレーション中に使用されるバッチあたりのサンプル数を決定します。calib_dataset
の形式がデータセット、ジェネレーター、またはkeras.utils.Sequence
インスタンスの場合、バッチ サイズはデータセット自体で制御します。ただし、calib_dataset
の形式がnumpy.array
オブジェクトの場合、デフォルトのバッチ サイズは 32 です。 - input_shape
- list(int) または list(list(int)) または tuple(int) または dictionary(int)。各入力レイヤーの入力形状が含まれます。明示的に設定しない場合、入力レイヤー内のデフォルト形状情報が使用されます。複数の入力がある場合は、たとえば input_shape=[1, 224, 224, 3] または input_shape=[[None, 224, 224, 3], [None, 64, 1]] のように、形状のリストを使用します。すべての次元に具体的な値が必要です。次元 batch_size は None または int とします。モデルの入力形状が [None, None, None, 3] のような変数の場合、[None, 224, 224, 3] のような形状を指定して最終的な量子化済みモデルを生成する必要があります。
- **kwargs
-
**kwargs
は、量子化ストラテジのユーザー定義設定のディクショナリを表します。これは、デフォルトのビルトイン量子化ストラテジの上書きを可能にします。たとえば、bias_bit=16
に設定すると、16 ビット クオンタイザーによってすべてのバイアスが量子化されます。ユーザー定義の設定の詳細は、vai_q_tensorflow2 の使用法 を参照してください。