首页 > 解决方案 > 未为 coremltools 实现 op 'len' 的 PyTorch 转换功能

问题描述

我正在尝试使用 Coremltools 将我的模型转换为 Core ML。我在这个简单的示例中复制了一些问题。

import torch
import torch.nn as nn
import coremltools

class SimpleTest(nn.Module):
    def forward(self, x):
        value = len(x)
        return torch.tensor(value)

simple_model = SimpleTest()


scripted_model = torch.jit.script(simple_model)
mlmodel = coremltools.converters.convert(scripted_model, inputs=[coremltools.TensorType(shape=(400,))], debug=True)

安慰

在此处输入图像描述

debug=True 在控制台中产生这个输出


the following model ops are IMPLEMENTED:
  constant
  tensor
the following model ops are MISSING:
  len

如您所见,我有一个错误提示“未实现 op 'len' 的 PyTorch 转换功能”。我有两个问题:

  1. len()是一个 Python 函数。为什么它会尝试转换为 PyTorchlen()函数?
  2. 我应该使用“register_torch_op”实现一些自定义转换器来修复这个错误吗?

也许您有其他建议如何避免这种错误?

标签: pytorchcoremlcoremltools

解决方案


推荐阅读