【问题标题】:Quantization Aware Training for Tensorflow Keras modelTensorFlow Keras 模型的量化感知训练
【发布时间】:2020-03-31 01:25:09
【问题描述】:

我想使用我的 keras 模型进行量化感知训练。我已经尝试过如下。我正在使用张量流 1.14.0

train_graph = tf.Graph()
train_sess = tf.compat.v1.Session(graph=train_graph)
tf.compat.v1.keras.backend.set_session(train_sess)

with train_graph.as_default():
    tf.keras.backend.set_learning_phase(1)
    model = my_keras_model()

    tf.contrib.quantize.create_training_graph(input_graph = train_graph, quant_delay=5)
    train_sess.run(tf.global_variables_initializer()) 

    model.compile(...)
    model.fit_generator(...)

    saver = tf.compat.v1.train.Saver()  
    saver.save(train_sess, checkpoint_path)

它可以正常工作。

但是,保存的模型(h5 和 ckpt)的大小与没有量化的模型完全相同。

这是正确的方法吗?我如何检查它是否量化好?

或者,有没有更好的量化方法?

【问题讨论】:

    标签: python tensorflow keras quantization-aware-training


    【解决方案1】:

    当您完成量化感知训练并将模型保存到磁盘时,它实际上还没有量化。换句话说,它是为量化“准备”的,但权重仍然是 float32。您必须进一步将模型转换为 TFLite 才能实际量化。您可以使用以下代码来实现:

    converter = tf.lite.TFLiteConverter.from_keras_model(model)
    converter.optimizations = [tf.lite.Optimize.DEFAULT]
    
    quantized_tflite_model = converter.convert()
    

    这将使用 int8 权重和 uint8 激活量化您的模型。

    查看official example 以获取更多参考。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-03
      • 2021-09-07
      • 2019-01-20
      • 1970-01-01
      • 2020-09-01
      • 1970-01-01
      • 2020-07-08
      相关资源
      最近更新 更多