问题标签 [quantization-aware-training]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
855 浏览

tensorflow - 我们可以使用 TF-lite 进行再训练吗?

我将预训练模型转换为 TF-lite,并希望部署到边缘设备。如果我们获得了新的训练数据并想改进预训练模型,是否可以在边缘设备上进行?前任。有什么方法可以训练模型并在边缘设备上再次保存到 TF-lite(FlatBuffer)?

感谢您的任何投入!

0 投票
1 回答
45 浏览

tensorflow - Tensorflows 量化感知训练是否会导致训练期间的实际加速?

我们正在研究将量化感知训练用于一个研究项目,以确定训练期间量化对收敛速度和运行时间的影响。尽管我们还没有完全相信这是正确的工具。您能否澄清以下几点:1)如果在量化意识训练期间对层进行了量化,这意味着输入和权重被量化,并且包括激活函数在内的所有操作都被量化,然后在返回之前,将输出反量化到精度与下一层兼容。这种理解正确吗?2)张量板分析器兼容性?3) 原则上是否进行量化意识训练,在您的一般经验中导致训练过程中的加速,或者这是否因为它仅仅是一个模拟而不可能?4)您能否向我们指出有关如何将自定义量化器和数据类型添加到 tensorflow 以使其与 GPU 兼容的资源?

非常感谢您的帮助!

0 投票
0 回答
62 浏览

python-3.x - 使用 tf.GradientTape 进行量化感知训练在 TensorFlow2.0 中出现错误

我正在使用 TensorFlow-2.2、tensorflow_model_optimization 和 Python 3.8。我正在尝试量化和训练一个包含 91.3375% 稀疏度的 LeNet-300-100 Dense 神经网络。这意味着 91.3375% 的权重为零。我正在关注Quantization TF 教程,我想训练一个使用tf.GradientTape而不是q_aware_model.fit()量化的稀疏网络。

如果您查看示例代码,相关的代码片段是:

给出以下错误:

-------------------------------------------------- ------------------------- InvalidArgumentError Traceback (last last call last) in 19 20 for x, y in train_dataset: ---> 21 train_one_step( q_aware_model、mask_model、优化器、x、y) 22 23

~/.local/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py in call (self, *args, **kwds) 578 xla_context.Exit() 579 else: --> 580 结果= self._call(*args, **kwds) 581 582 if tracking_count == self._get_tracing_count():

~/.local/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py in _call(self, *args, **kwds) 642 # 提升成功,所以变量被初始化,我们可以运行643 # 无状态函数。--> 644 return self._stateless_fn(*args, **kwds) 645 else: 646 canon_args, canon_kwds = \

~/.local/lib/python3.8/site-packages/tensorflow/python/eager/function.py in call (self, *args, **kwargs) 2418 with self._lock:
2419 graph_function, args, kwargs = self ._maybe_define_function(args, kwargs) -> 2420 return graph_function._filtered_call(args, kwargs) # pylint: disable=protected-access 2421 2422 @property

~/.local/lib/python3.8/site-packages/tensorflow/python/eager/function.py 在 _filtered_call(self, args, kwargs) 1659 argskwargs. 1660 """ -> 1661 return self._call_flat( 1662 (t for t in nest.flatten((args, kwargs), expand_composites=True) 1663
if isinstance(t, (ops.Tensor,

~/.local/lib/python3.8/site-packages/tensorflow/python/eager/function.py in _call_flat(self, args, capture_inputs, canceling_manager)
1743 and execution_eagerly): 1744 # 没有磁带正在观看;跳到运行函数。-> 1745 返回 self._build_call_outputs(self._inference_function.call(1746
ctx,args,cancellation_manager=cancellation_manager))1747
forward_backward = self._select_forward_and_backward_functions(

~/.local/lib/python3.8/site-packages/tensorflow/python/eager/function.py in call(self, ctx, args, cancel_manager) 591 with _InterpolateFunctionError(self): 592 if cancel_manager 是 None: -- > 593 个输出 = execute.execute(594 str(self.signature.name),595 num_outputs=self._num_outputs,

~/.local/lib/python3.8/site-packages/tensorflow/python/eager/execute.py in quick_execute(op_name, num_outputs, inputs, attrs, ctx, name) 57 try: 58 ctx.ensure_initialized() -- -> 59 张量 = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name, 60 个输入, attrs, num_outputs) 61 除了 core._NotOkStatusException 为 e:

InvalidArgumentError:var 和 grad 的形状不同[10] [100,10] [[节点 Adam/Adam/update_4/ResourceApplyAdam(定义于:29)]] [Op:__inference_train_one_step_20360]

错误可能源于输入操作。连接到节点 Adam/Adam/update_4/ResourceApplyAdam 的输入源操作:Mul_4(定义于 :26)
sequential/quant_dense_2/BiasAdd/ReadVariableOp/resource(定义于 /home/arjun/.local/lib/python3.8/site-packages /tensorflow_model_optimization/python/core/quantization/keras/quantize_wrapper.py:162)

函数调用栈:train_one_step

有没有办法将 TF 模型量化与 tf.GradientTape 结合起来?

谢谢!

0 投票
1 回答
176 浏览

tensorflow - 使用 TF-lite 将 MobileFacenet 转换为量化感知模型时,create_training_graph() 失败

我正在尝试根据建议量化MobileFacenet来自 sirius-ai 的代码) ,我认为我遇到了与这个 相同的问题

当我添加tf.contrib.quantize.create_training_graph()到训练图中
(train_nets.py ln.187:在梯度之前train_op = train(...)或在train()utils/common.py ln.38 之前)

它没有在图中添加量化感知操作来收集动态范围 max\min。

我假设我应该在 tensorboard 中看到一些额外的节点,但我没有,因此我认为我没有成功地在训练图中添加量化感知操作。我尝试追踪 tensorflow,发现我对 _FindLayersToQuantize() 一无所获。

但是,当我添加tf.contrib.quantize.create_eval_graph()以优化训练图时。我可以看到一些量化感知操作作为act_quant ...由于我没有成功在训练图中添加操作,因此我没有权重可以加载到评估图中。因此我收到了一些错误消息

或者

有谁知道如何解决这个错误?或者如何以高精度获得量化的 MobileFacenet?

谢谢!

0 投票
1 回答
934 浏览

tensorflow2.0 - op 尚不支持量化:tensorflow 2.x 的“DEQUANTIZE”

我正在通过 keras 在 resnet 模型上进行 QAT,在转换为 tflite 全整数模型时遇到了这个问题。我已经尝试过最新版本的 tf-nightly,但它并没有解决问题。我在 QAT 期间使用量化注释模型进行批量标准化量化

注释模型

这是我用来转换模型的代码:

如果我通过添加到“target_spec.supported_ops”来绕过这个错误tf.lite.OpsSet.TFLITE_BUILTINS,我仍然在 edge_tpu 编译器遇到这个 DEQUANTIZE 问题

0 投票
1 回答
588 浏览

tensorflow - Batch Normalization Quantize Tensorflow 1.x 没有 MinMax 信息

层 (....) 作为 Conv 算子的输入,产生输出数组 model/re_lu_1/Relu,缺少最小/最大数据,这是量化所必需的。如果准确性很重要,要么针对非量化输出格式,要么使用您的模型从浮点检查点运行量化训练,以更改输入图以包含最小/最大信息。如果您不关心准确性,可以传递 --default_ranges_min= 和 --default_ranges_max= 以方便实验。

0 投票
1 回答
470 浏览

tensorflow - Tensorflow 无法量化重塑函数

我将训练我的模型量化意识。但是,当我使用它时,tensorflow_model_optimization 无法量化 tf.reshape 函数,并引发错误。

  1. 张量流版本:'2.4.0-dev20200903'
  2. 蟒蛇版本:3.6.9

编码:

和输出:

如果有人知道,请帮忙?

0 投票
1 回答
317 浏览

python - tensorflow 2.2.0 中的量化感知训练产生更高的推理时间

我正在使用 MobilenetV2 对个人数据集进行迁移学习的量化。我尝试过两种方法:

i.) 仅训练后量化:它工作正常,并且在 224,224 维上推理 60 幅图像的平均时间为 0.04 秒。

ii.) 量化感知训练 + 训练后量化:它比仅训练后量化产生更高的准确性,但对于相同的 60 张图像产生 0.55 秒的更高推理时间。

1.) 只有训练后量化模型(.tflite)可以通过以下方式推断:

2.) 量化感知训练+训练后量化可以通过以下代码推断。不同之处在于它在这里要求 float32 输入。

我进行了很多搜索,但没有得到任何关于此查询的回复。如果可能的话,请帮助解释为什么在量化感知训练+训练后量化的情况下,与仅训练后量化相比,我的推理时间会变高?

0 投票
0 回答
38 浏览

tensorflow - 如何找到 tensorflow 感知训练量化的模型权重

我对意识训练量化很感兴趣,当我将我的 .pb 模型转换为 .tflite 并查看 netron 中的权重时。

照片中红色圈出的区域是否在同一层?如果是,我怎样才能将两个不同的维度转换为同一个维度?(绿色圈出的区域)

模型在这里

对不起,我的声望不到10,我不能直接显示图片。当我的声望足够时,我会编辑这个话题。

![PICTURE is here](https://i.stack.imgur.com/Guycm.jpg)

0 投票
1 回答
197 浏览

python - 量化的 TFLite 模型比 TF 模型提供更好的准确性

我正在开发一个端到端的训练量化感知训练示例。使用CIFAR 10数据集,我加载了预训练的MobilenetV2模型,然后使用 TensorFlow 指南中的代码来量化我的模型。整个过程正确完成后,我得到以下结果:

我想知道,这怎么可能?量化应该会稍微降低准确性。

我注意到,在 TensorFlow 的指南示例中,准确性也有所提高,但与我的示例相比却很少。更具体地说,当运行这个使用mnist数据集的代码时,我得到以下结果,这是 TensorFlow 的开发人员可以接受的,因为他们提到准确率没有变化

请注意,我没有更改从 TensorFlow 指南中附加的代码,我只是使用了不同的 数据集模型