将 pytorch 转换为 coreml 以实现逐元素最大操作

Posted

技术标签:

【中文标题】将 pytorch 转换为 coreml 以实现逐元素最大操作【英文标题】:Conversion pytorch to coreml for element-wise maximum operation 【发布时间】:2021-04-11 02:02:01 【问题描述】:

我尝试将 PyTorch 模型转换为基于 coremltools 的元素最大操作的 coreml。

通过torch.max操作,我得到了

ValueError: node input.2 (max) got 2 input(s), expected [3]

使用 torch.maximum 操作

RuntimeError: PyTorch convert function for op 'maximum' not implemented.

有解决这个问题的办法吗?

【问题讨论】:

你能提供一些额外的代码吗? 【参考方案1】:

我在将 pytorch element-wise 操作转换为 coreml 模型时遇到了同样的问题,但通过为带有 torch 前端的 MIL 转换器添加对 torch.maximum 和 torch.minimum 的支持解决了这个问题。

@register_torch_op
def maximum(context, node):
    inputs = _get_inputs(context, node)
    x = inputs[0]
    y = inputs[1]
    out = mb.maximum(x=x, y=y, name=node.name)
    context.add(out)

【讨论】:

以上是关于将 pytorch 转换为 coreml 以实现逐元素最大操作的主要内容,如果未能解决你的问题,请参考以下文章

快速从 .npy 转换为 MLMultiArray 以进行 CoreML 预测

将 PyTorch 模型与 CoreML 一起使用时输入尺寸重塑

将pytorch模型转为coreml后,预测结果差很多

从 pytorch 模型转换而来的 coreML 模型给出了错误的预测概率

如何在 TensorFlow、Keras 或 PyTorch 中部署 CoreML 模型?

CoreML:为 ONNX RandomNormal 创建自定义层