Skip to content

dipoorlet 支持动态输入吗 #26

@kyrie2to11

Description

@kyrie2to11

在试用dipoorlet PTQ量化 torch 导出的onnx模型时报错: ValueError: cannot reshape array of size 172800 into shape (0,0,3,180,320)。

  1. torch.onnx.export() 导出时指定了dynamic_axes, 具体如下:
torch.onnx.export(
        model, # torch model
        dummy_input, # random dummy input
        onnx_path, # save path of onnx format model
        export_params=True, # export all params
        verbose=True, # enable debug message
        training=torch.onnx.TrainingMode.EVAL, # export the model in inference mode
        input_names=input_names, # names to assign to input nodes of computation graph
        output_names=output_names, # names to assign to output nodes of computation graph
        opset_version=16, # version of opset
        # dynamic axes setting for dynamic input/output shapes
        dynamic_axes={
            "LR_bins":{0: "batch_size", 1:"temporal_dim"},
            "HR":{0: "batch_size", 1:"temporal_dim"}
        }
  1. 使用dipoorlet量化时具体报错如下:
root@autodl-container-032d11993c-d711a821:~/autodl-tmp/Dipoorlet_Examples# sh verification_trial.sh
[2023-11-07 14:59:14 dipoorlet](__main__.py 118): INFO Do tensor calibration...
Minmax update: 0it [00:00, ?it/s]
Traceback (most recent call last):
  File "/root/miniconda3/lib/python3.8/runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/root/miniconda3/lib/python3.8/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/root/autodl-tmp/Dipoorlet/dipoorlet/__main__.py", line 119, in <module>
    act_clip_val, weight_clip_val = tensor_calibration(onnx_graph, args)
  File "/root/autodl-tmp/Dipoorlet/dipoorlet/tensor_cali/tensor_cali_base.py", line 6, in tensor_calibration
    act_clip_val = tensor_cali_dispatcher(args.act_quant, onnx_graph, args)
  File "/root/autodl-tmp/Dipoorlet/dipoorlet/utils.py", line 297, in wrapper
    return dispatch(args[0])(*(args[1:]), **kw)
  File "/root/autodl-tmp/Dipoorlet/dipoorlet/tensor_cali/basic_algorithm.py", line 18, in find_clip_val_minmax
    stats_min_max = forward_get_minmax(onnx_graph, args)
  File "/root/autodl-tmp/Dipoorlet/dipoorlet/forward_net.py", line 215, in forward_get_minmax
    ort_inputs[name] = data[name][:].reshape(onnx_graph.get_tensor_shape(name))
ValueError: cannot reshape array of size 172800 into shape (0,0,3,180,320)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions