专栏算法工具链calibration精度评估部分数据无法正常导入

calibration精度评估部分数据无法正常导入

已解决
Lmh2024-09-27
85
3

J5 J5_OE_1.1.74

问题一:calibration精度评估部分数据无法正常导入

按照论坛回复,calibration模型仅接受单个tensor类型或dict字典类型,我们对数据类型进行了修改,整理成如下格式:

仍然出现报错。

此后我们对于多数据输入,尝试了修改dataloader为torch.utils.data.Dataloader,也尝试了更改输入数据的格式,没有得到有效解决。

对此,想请教下对calibration模型输入多个张量,是否通过dict来包含这多个张量作为输入,还是有其他方式?能否提供一个示例展示多个张量如何输入到calibration模型?

我们这边有尝试过使用torch.utils.data.DataLoader来加载数据,对应的数据格式是dict,但是在calibration模型走到self.quant这一步时,由于输入x为dict并非Qtensor,会直接进到self.activation post process中,后续会走到FakeQuantize的forward中,这里会对x的dtype进行判断,且此处默认x的类型为张量,但由于我们的输入为Dict,所以会报出没有dtype属性的错误。而self.activation post process这个是来源于给的qconfig的,所以是否在输入在dict时,需要用其他qconfig?还是有其他的处理方式?

另外,对于黄色框标注出来的部分,还请详细解释一下,为什么说训练的时候只使用一个网络,但是在推理的时候使用的是多个子网络?对于这部分注释能否详细解释一下含义?

 

算法工具链
征程5
+1
评论3
0/1000
  • Huanghui
    Lv.5

    从描述中总结的问题概要如下:

    • 问题简述:校准阶段,calibration模型无法正常导入校准数据。

    • 已做尝试:1. 修改dataloader为torch.utils.data.Dataloader;2. 更改输入数据的格式(dict等)
    • 尝试结果:没有得到有效解决
    • 问题请求:1.     calibration模型输入多个张量,是否通过dict来包含这多个张量作为输入,还是有其他方式?2.     能否提供一个示例展示多个张量如何输入到calibration模型?

    答案回复:

    1. 输入多个张量时,可以通过dict传入,但是使用QuantStub()进行量化时要逐个的针对dict中的每个tensor进行量化

    2. 多个张量如何输入到calibration模型的示例代码路径:/usr/local/lib/python3.10/dist-packages/hat/models/structures/lidar_multitask/lidar_multitask.py
    2024-09-30
    1
    0
  • kotei左文亮
    Lv.3

    问题已经收到。

    2024-09-27
    0
    0
  • momo(社区版)
    Lv.4

    可以通过将data构建为一个dict,然后在forward代码中根据key进行取值,可以借鉴参考算法中的做法,如:

    代码路径:/usr/local/lib/python3.10/dist-packages/hat/models/structures/lidar_multitask/lidar_multitask.py

    2024-09-30
    0
    0