问题标签 [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.
tensorflow - 在 tensorflow 2.3 中执行量化感知训练 (QAT) 时无法访问正则化损失值
在 tensorflow 2.3 中执行量化感知训练 (QAT) 时无法访问正则化损失值。
AttributeError:“张量”对象没有属性“numpy”
我创建了一个测试 mnist 模型,并使用 TFMOT QAT 库在模型中添加了量化节点。在尝试访问在model.losses
tensorflow 示例中提到的收集到的正则化损失的值时,我收到了上述错误。当我在没有量化(QAT)的情况下运行相同的值时,可以很好地访问这些值。这可能是什么原因造成的?我正在使用功能模型并执行自定义训练操作。
重现问题的代码
错误输出
python - 张量流 2.6 中的量化感知训练问题。AttributeError:“列表”对象没有属性“dtype”
我正在训练一个 U2Net 模型,并希望使用量化感知训练来减小模型的大小。根据官方文档,我们需要导入 tensorflow_model_optimization 库并使用量化模型功能。
问题 - 当我使用它时,我得到 AttributeError: 'list' object has no attribute 'dtype' 这是我的模型声明代码 -
U2net函数是模型声明部分。我能够得到正常的model.summary()。我正在尝试训练google colab gpu的模型。没有 QAT,模型训练良好。
请帮忙
python - 使用 FX 图形模式时如何在 PyTorch 量化感知训练中冻结 BN 统计数据
在进行量化感知训练时冻结 BN 统计数据是谷歌量化白皮书中介绍的一种常见训练技术。而PyTorch 官方教程的代码片段也展示了如何在 PyTorch 中做到这一点:
但是,正如其标题所示,这是“急切模式”的代码片段。但我正在尝试使用原型 FX Graph 模式进行量化感知训练。PyTorch官方教程只是展示了使用FX Graph模式时如何进行PTQ,仅简单介绍FX Graph模式下的QAT。
正如上面的代码片段所示,它只是省略了“训练循环”。我想知道的是,在急切模式下冻结 BN 统计数据的 APItorch.nn.intrinsic.qat.freeze_bn_stats
在 FX Graph 模式下是否仍然可用,这意味着我可以使用model_prepared_fx.apply(torch.nn.intrinsic.qat.freeze_bn_stats)
) 来实现我的目标?还是我应该使用另一种机制来做到这一点?
tensorflow - 量化意识训练
我在这个领域有点新手。所以,如果这是非常基本的事情,我提前道歉。我目前正在尝试按照此链接https://colab.research.google.com/github/google-coral/tutorials/blob/master/retrain_detection_qat_tf1.ipynb#scrollTo=6RxtslKJf2td 使用 TensorFlow 对象检测 API 训练量化感知模型. 我使用 mobilenet_v2_quant_aware 作为我的模型。图像是 1000 个,有 800 个火车和 200 个火车。我面临的问题是损失没有收敛。这是管道:
您能否建议一些我可以做的更改,或者如果导致问题,我应该增加我的数据集吗?
我尝试了不同的批量大小、学习率、衰减步骤和衰减因子,但没有帮助!
TensorFlow-gpu 1.15 GPU = Nvidia gtx 780
cpu - 以最小延迟量化用于 cpu 的 Bert 问答模型
我们如何训练 Roberta 的量化感知训练基础模型?量化模型在 CPU 上的延迟是否最小?我们如何在生产环境中使用 BERT 模型进行问答。
unity3d-unet - 执行 QAT 后的附加量化节点
我正在为 Unet 模型执行量化感知训练。在使用 Netron 分析 tflite 文件时,我看到模型的解码器部分有额外的量化层,特别是在 Upsampling2D 和连接层之间。我想删除这些,有帮助吗?
python - 无法量化自定义层 - 量化意识培训
我正在关注量化意识培训综合指南,并在 QAT 中为自定义层而苦苦挣扎,tf=2.6.0
使用py=3.9.7
. 下面是我的问题的一个玩具示例:
我写了一个简单的自定义层来实现 Conv2D
我用那个层创建了一个小模型,然后递归地传递它的层并使用注释tfmot.guantization.keras.quantize_annotate_layer
(每个自定义层可能有更多需要量化的自定义子层)。然后我适用tfmot.quantization.keras.quantize_apply
于带注释的模型。结果模型由所有量化层组成,除了我的自定义层之外,还没有被量化。
我会注意到,当我用MyConv
下面的代码替换自定义层时,如综合指南中所示,量化是有效的。
请帮我解决这个问题。可能是我的问题QuantizeConfig
?
以下是我的完整代码:
python - 如何在 PyTorch 中继续对保存的模型进行量化感知训练?
我有一个分两个阶段训练的 DL 模型:
- 使用合成数据进行预训练
- 使用真实世界数据进行微调
模型在第 1 阶段后保存。在第 2 阶段,从 .pth 文件创建并加载模型,并使用新数据再次开始训练。我想申请 QAT,但我在第 2 阶段遇到了问题。损失真的很大(就像没有 QAT 的合成训练的开始 - 应该小 60 倍以上)。我怀疑这是观察者重新启动和冻结的错。问题是:加载 QAT 模型并继续训练的正确方法是什么?
第 1 阶段的代码:
第 2 阶段的代码:
我试过先初始化 QAT,然后加载权重,但它没有改变任何东西。我也尝试过手动将模型转换为 QAT:
但是经过训练后,当我尝试转换为量化模型时,它会引发错误:
当我在模型加载后跳过冻结 BN 和观察者时,它似乎工作正常。但它是正确的吗?这不会破坏之前学习的量化水平吗?
pytorch - 从 pytorch 转换为 ONNX 后,量化模型给出了负精度
我正在尝试在 pytorch 中训练一个量化模型并将其转换为 ONNX。我在 pytorch_quantization 包的帮助下采用了量化感知训练技术。我使用以下代码将我的模型转换为 ONNX:
转换后,我收到以下警告:
warnings.warn("'enable_onnx_checker' 已弃用并忽略。它将在 " W0305 12:39:40.472136 140018114328384 tensor_quantizer.py:280] 中删除 使用 Pytorch 的原生实验性假量化。
/usr/local/lib/python3.8/dist-packages/pytorch_quantization/nn/modules/tensor_quantizer.py:285:TracerWarning:将张量转换为 Python 数字可能会导致跟踪不正确。我们无法记录 Python 值的数据流向,所以以后这个值会被当作一个常量来处理。这意味着跟踪可能不会推广到其他输入!
此外,精度对 ONNX 模型无效!
更多信息在这里:
ONNX 转换有什么问题?