vai_q_tensorflow2 API を使用した量子化 - 3.5 日本語

Vitis AI ユーザー ガイド (UG1414)

Document ID
UG1414
Release Date
2023-09-28
Version
3.5 日本語

次のコードは、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_datasettrain_dataset、またはその他のデータセットの全体または一部から取得できます。

calib_steps
calib_steps は、キャリブレーションの全ステップ数です。デフォルトでは、変数は None に設定されます。calib_datasettf.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 の使用法 を参照してください。