当前位置: 首页 > 知识库问答 >
问题:

量化TensorFlow图进行推理

叶国兴
2023-03-14

我试图量化我的模型(CNN),以便将其转换为量化模型。tflite模型。我将在以下位置阅读教程:https://github.com/tensorflow/tensorflow/tree/r1.13/tensorflow/contrib/quantize#quantization-意识训练

首先,我通过调用以下命令在我的图中引入假量化节点:

tf.contrib.quantize.create_training_graph(quant_delay=500)

但是,当最后我尝试调用此函数以确保图形以正确的格式导出量化信息时:

tf.contrib.quantize.create_eval_graph(input_graph=tf.get_default_graph())

我得到这个错误:

ValueError:在图形中找到训练op,正在退出{'ApplyAdam'}

事实上,在构建图表时,我有效地添加了AdamOptimizer来训练我的模型:

train_step = tf.train.AdamOptimizer(1e-4).minimize(...)

如何解决这个问题?这个错误似乎建议我应该删除Adam优化器,尽管我需要它来进行培训。

我在TensorFlow网页和教程以及其他论坛上都找不到任何关于这方面的帮助。我希望你能帮助我

提前谢谢

共有1个答案

赵钊
2023-03-14

它可能有点复杂,但您需要创建两个独立且不同的图形,一个用于训练,一个用于导出。查看此要点,了解训练的示例,然后使用量化感知训练、导出和转换进行微调。

步骤1)

在训练图中,您可以创建正常情况下的所有内容,然后调用tf。contrib。量化。创建训练图(…) 训练操作之前,请先进行编码>。训练你的模型,然后做一个检查点,你可以通过tf来完成。估计器API或定期在tf中使用。会话

步骤2)

然后你需要创建一个推断图,你甚至不需要让损失函数只是你模型的推断部分。在调用之后tf.contrib.quantize.create_eval_graph(...)添加量化操作。最后,你只需从训练中创建的检查点恢复,然后导出到你想要的格式Frozengraph或保存的模型。

步骤3)

使用toco将frozengraph/savedmodel转换为tflite。

 类似资料:
  • 我正在尝试将量化图形加载到Android应用程序中。我的构建文件包含 额外的量化deps用于独立的C构建。 由于GEMMLOWP中存在大量错误,我无法使用Bazel进行编译。在Android中包含gemmlowp和量化操作的正确方式是什么? 下面是一个错误示例: 这是在Ubuntu 16.04和Bazel 0.3.0上。 这里有一个要点,它有两次连续尝试构建包的输出——第一次在highwayhas

  • 本文向大家介绍tensorflow 1.0用CNN进行图像分类,包括了tensorflow 1.0用CNN进行图像分类的使用技巧和注意事项,需要的朋友参考一下 tensorflow升级到1.0之后,增加了一些高级模块: 如tf.layers, tf.metrics, 和tf.losses,使得代码稍微有些简化。 任务:花卉分类 版本:tensorflow 1.0 数据:flower-photos

  • 问题内容: 我正在将我的Caffe网络移植到TensorFlow上,但似乎没有进行初始化的工作。我正在使用,但这似乎使训练变得更加困难。 问题答案: 在 Tensorflow 2.0 和 更高版本中 ,和均已弃用。为了进行Xavier初始化,您现在必须切换到: Glorot制服和Xavier制服是同一初始化类型的两个不同名称。如果您想了解有关如何在带有或不带有Keras的TF2.0中使用初始化的更

  • 我已经训练了一个简单的CNN模型在Ciafer-10上使用假量化(https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/quantize)。然后我用toco生成了一个. tflite文件。现在我想使用一个python解释器来测试tflite模型。 因为我用了tf。形象在训练期间,按图像标准化减去平均值并除以方

  • 我有一个在keras中训练的模型,这是一个在MNIST数据集上训练的简单模型。 我试图做的是重写这个模型并在FPGA设备上运行。为了做到这一点,我想充分了解量化模型是如何工作的。 首先,我用训练后的量化将这个模型转换为。tflite格式和UINT8精度(https://www.tensorflow.org/lite/performance/post_training_quantization).

  • 在TensorFlow中执行批量规格化的正确方法是什么?(即,我不想计算连续均值和方差)。我当前的实现基于tf。nn。batch\u normalization(批次规格化),其中x是具有形状的卷积层的输出。[批次大小、宽度、高度、通道数]。我想在通道方面执行批处理规范。 但这种实施的结果非常糟糕。与tensorflow比较。承包商。苗条的batch\u norm显示其票价较低(同样糟糕的培训表现