开发者社区 > ModelScope模型即服务 > 计算机视觉 > 正文

ModelScope导出模型到onnx,提示这个,是啥意思哦?

ModelScope导出模型到onnx,提示这个,是啥意思哦?
ef590da007a630302a2d4882c59751a7.png

展开
收起
青城山下庄文杰 2023-07-29 11:56:12 205 0
3 条回答
写回答
取消 提交回答
  • 您好,目前Exporter组件尚不支持这个模型的导出的-此回答整理自钉群“魔搭ModelScope开发者联盟群 ①”

    2023-07-31 20:27:54
    赞同 展开评论 打赏
  • 这个警告信息的意思是,在将模型导出为ONNX格式时,使用了批处理大小(batch size)为1。它提醒你确保模型的输入张量形状是动态的。

    在深度学习中,通常使用批处理来同时处理多个样本。然而,在某些情况下,你可能需要使用单个样本进行推断,即批处理大小为1。当你将这样的模型导出为ONNX格式时,警告提示你要确保模型的输入张量形状是可变的或动态的。

    动态形状意味着模型的输入张量可以适应不同大小的输入数据。这对于在推理过程中接受不同尺寸的输入非常重要。如果模型的输入张量形状是静态的,即固定大小的张量,可能会导致问题,因为ONNX模型需要能够处理不同尺寸的输入数据。

    为了解决这个警告,你可以检查模型的输入张量形状,并确保其具有动态性。这意味着你的模型的输入张量应该能够适应不同大小的输入数据,而不仅仅限制于特定的固定大小。

    如果你不打算使用不同大小的输入数据,而只需用于单个样本推理,那么忽略这个警告也是可以的。但是,如果你计划在推理过程中使用不同大小的输入数据,那么确保模型的输入张量形状是动态的会更好。

    2023-07-31 18:56:24
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    当您使用 ModelScope 导出模型到 ONNX 格式时,可能会遇到各种错误和警告提示。其中一个可能的提示是:

    Copy
    UserWarning: Exporting a model to ONNX format with a batch size of 1. Please make sure that your model's input tensor shape is dynamic.
    这个提示的意思是,在将模型导出到 ONNX 格式时,模型的批处理大小为 1。这意味着,在推理过程中,模型只能处理单个输入样本。但是,如果您的模型的输入张量形状是固定的,这可能会导致推理失败或结果不准确。

    为了解决这个问题,您可以尝试以下几种方法:

    使用动态形状的输入张量:将模型的输入张量形状设置为动态形状,可以使模型能够处理不同大小的输入。在 PyTorch 中,您可以使用以下代码将输入张量形状设置为动态形状:

    python
    Copy
    input_shape = (None, input_size)
    input_tensor = torch.randn(batch_size, *input_shape[1:])
    traced_model = torch.jit.trace(model, input_tensor)
    dynamic_axes = { 'input': { 0: 'batch_size' }, 'output': { 0: 'batch_size' } }
    torch.onnx.export(traced_model, input_tensor, 'model.onnx', opset_version=11, dynamic_axes=dynamic_axes)
    这将创建一个动态形状的输入张量,并使用 PyTorch 的 JIT 编译器将模型转换为 TorchScript 格式。然后,使用 PyTorch 的 ONNX 导出器将模型导出到 ONNX 格式,并指定输入张量的动态轴。

    使用固定形状的输入张量:如果您的模型必须使用固定形状的输入张量,可以考虑将批处理大小设置为 1,并在推理时逐个输入样本进行处理。在这种情况下,您需要注意模型的内存使用情况,并确保模型能够处理大量的单个输入样本。

    2023-07-30 12:59:14
    赞同 展开评论 打赏

包含图像分类、图像生成、人体人脸识别、动作识别、目标分割、视频生成、卡通画、视觉评价、三维视觉等多个领域

相关电子书

更多
视觉AI能力的开放现状及ModelScope实战 立即下载
ModelScope助力语音AI模型创新与应用 立即下载
低代码开发师(初级)实战教程 立即下载