首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tensorflow Keras模型的量化感知训练

Tensorflow Keras模型的量化感知训练
EN

Stack Overflow用户
提问于 2020-03-31 09:25:09
回答 1查看 301关注 0票数 0

我想用我的keras模型进行量化感知训练。我试过了,如下所示。我使用的是tensorflow 1.14.0

代码语言:javascript
复制
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)的大小与未量化的模型完全相同。

这条路对吗?我如何检查它是否量化得很好?

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

EN

回答 1

Stack Overflow用户

发布于 2020-05-06 21:37:27

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

代码语言:javascript
复制
converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]

quantized_tflite_model = converter.convert()

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

请查看official example以获得进一步的参考。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60942025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档