次の表に、vai_q_tensorflow2 でサポートされる動作および API を示します。
レイヤー タイプ | サポートされるレイヤー | 説明 |
---|---|---|
Core | tf.keras.layers.InputLayer | |
Core | tf.keras.layers.Dense | |
Core | tf.keras.layers.Activation | 「activation」が「relu」または「linear」の場合、量子化されます。 「activation」が「sigmoid」または「swish」の場合、デフォルトでは hard-sigmoid または hard-swish に変換されてから量子化されます。 それ以外の場合は量子化されません。 |
Convolution | tf.keras.layers.Conv2D | |
Convolution | tf.keras.layers.DepthwiseConv2D | |
Convolution | tf.keras.layers.Conv2DTranspose | |
Pooling | tf.keras.layers.AveragePooling2D | |
Pooling | tf.keras.layers.MaxPooling2D | |
Pooling | tf.keras.layers.GlobalAveragePooling | |
Normalization | tf.keras.layers.BatchNormalization | デフォルトでは、BatchNormalization レイヤーは前のたたみ込みレイヤーと融合されます。融合できない場合は、depthwise たたみ込みに変換されます。 QAT モードで train_with_bn = TRUE に設定されていると、BatchNormalization レイヤーは擬似融合されます。get_deploy_model 関数を呼び出すと、融合されます。 |
Regularization | tf.keras.layers.Dropout | デフォルトでは、ドロップアウト レイヤーは除去されます。QAT モードで remove_dropout = FALSE に設定されていると、ドロップアウト レイヤーは保持されます。get_deploy_model 関数を呼び出すと、除去されます。 |
Reshaping | tf.keras.layers.Reshape | |
Reshaping | tf.keras.layers.Flatten | |
Reshaping | tf.keras.UpSampling2D | |
Reshaping | tf.keras.ZeroPadding2D | |
Merging | tf.keras.layers.Concatenate | |
Merging | tf.keras.layers.Add | |
Merging | tf.keras.layers.Muliply | |
Activation | tf.keras.layers.ReLU | |
Activation | tf.keras.layers.Softmax | Softmax レイヤーの入力が量子化されます。スタンドアロン Softmax IP 上で実行して高速化できます。 |
Activation | tf.keras.layers.LeakyReLU | DPU では 「alpha」 =0.1 のみがサポートされます。その他の値の場合、量子化されず、CPU にマップされます。 |
hard_sigmoid | tf.keras.layer.ReLU(6.)(x + 3.)* (1./ 6.)) | サポートされる hard_sigmoid は、Mobilenet_v3 から得られます。 tf.keras.Activation.hard_sigmoid は現時点ではサポートされておらず、量子化されません。 |
注記: DPU には、これらのサポートされるレイヤーに関する制限があるため、コンパイル中に、これらのレイヤーが CPU にロールバックされることがあります。詳細は、サポートされている演算子と DPU の制限を参照してください。