【问题标题】:Layer is not supported (When train Keras model trained with QAT)不支持层(当训练使用 QAT 训练的 Keras 模型时)
【发布时间】:2021-01-15 06:43:54
【问题描述】:
当我使用 QAT(量化感知训练)训练 Keras 模型时,
存在一些不兼容的问题,例如不支持 BatchNormalization 或 UpSampling2D 等。
如何在不使用 tfmot.quantization.keras.quantize_annotate_layer 在每一层上应用每一层的情况下直接防止它? (尤其是使用 tensorflow keras 功能 API(而不是 tf.keras.Sequential)构建模型时)
【问题讨论】:
标签:
tensorflow
keras
tensorflow2.0
【解决方案1】:
QAT 模块支持的层见here
然后,要量化一些层而不是整个模型,就按照官方tutorial,然后添加你想用什么层来量化。
#added layers here
supported_layers = [tf.keras.layers.Conv2D, tf.keras.layers.Dense, tf.keras.layers.ReLU]
def apply_quantization_to_dense(layer):
for supported_layer in supported_layers:
if isinstance(layer, tf.keras.layers.Dense):
return tfmot.quantization.keras.quantize_annotate_layer(layer)
return layer