下表列出了 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 | |
Convolution | tf.keras.layers.SeparableConv2D | |
Pooling | tf.keras.layers.AveragePooling2D | |
Pooling | tf.keras.layers.MaxPooling2D | |
Pooling | tf.keras.layers.GlobalAveragePooling | |
Normalization | tf.keras.layers.BatchNormalization | 默认情况下,BatchNormalization 层与先前的卷积层融合。如果无法组合,则会转换为逐通道卷积。 在 QAT 模式下,如果 |
Regularization | tf.keras.layers.Dropout | 默认情况下,dropout 层会被移除。在 QAT 模式下,如果 tremove_dropout 设置为 FALSE,则保留 dropout 层。当调用 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.Multiply | |
Activation | tf.keras.layers.ReLU | |
Activation | tf.keras.layers.Softmax | Softmax 层的输入被量化。它可以在独立 Softmax IP 上运行以获得加速。 |
Activation | tf.keras.layers.LeakyReLU | 仅限“alpha=0”的 LeakyReLU 层。该层可量化并映射到 DPU。量化器会在内部将 alpha 值自动转换为 26/256 以匹配 DPU 的实现。含其他值的 LeakyReLU 不予量化,并将映射到 CPU。 |
Hard_sigmoid | tf.keras.layer.ReLU(6.)(x + 3.)* (1./ 6.) | 支持的 hard_sigmoid 来自 Mobilenet_v3。 当前不支持 tf.keras.Activation.hard_sigmoid,且不予量化。 |
Activation | tf.keras.layers.PReLU |
注释: DPU 对这些受支持的层可能存在限制。这些层可在编译期间回滚到 CPU。如需了解更多信息,请参阅 受支持的运算符和 DPU 限制。