将PyTorch转换为CoreML



我有这个模型:https://github.com/williamyang1991/DualStyleGAN并尝试将其转换为CoreML。到目前为止,我创建了原始Colab笔记本的副本,并在末尾添加了两个块:

!pip install coremltools
import coremltools as ct

#@title Convert inverted image.
inverted_latent = torch.Tensor(result_latents[0][4]).cuda().unsqueeze(0).unsqueeze(1)
with torch.no_grad():
net.eval()
[sampled_src, sampled_dst] = net(inverted_latent, input_is_latent=True)[0]
traced_model = torch.jit.trace(net, inverted_latent)
mlmodel = ct.convert(traced_model, inputs=[ct.ImageType(name="input", shape=inverted_latent.shape,bias=[-1,-1,-1],scale=2.0/255.0)])
mlmodel.save("modelsaved.mlmodel")

要运行它,您应该将任何带有face到/content的图像放在/usr/local/lib/python3.7/dist-packages/torchvision/transforms/functional.py中用np.round 代替545546行的圆形方法

但后来它在失败了

mlmodel=ct.convert(…

带有:

RuntimeError:操作"pythonop"的PyTorch转换函数未实现。

我建议有一种方法可以用可以转换的方法重写这个模块,对吗?但是我不知道如何找到这个模块的来源。

所以我的问题是:如果我以正确的方式思考,我如何找到模块的来源?如果我错了,请告诉我正确的方法。

代码首先将模型加载到PyTorch中。然后,代码将模型转换为CoreML格式,并将其保存到.mlmodel文件中。下面的代码将采用现有的PyTorch模型,并将其转换为具有输入和输出功能的CoreML模型。输出保存在example.mlmodel文件中,该文件可以在Xcode或任何其他支持CoreML模型的开发环境中打开。

import torch
import coremltools

model = torch.load('MyPyTorchModel.pt')

coreml_model = coremltools.converters.pytorch.from_pytorch(model,
input_features= 
['input'],
output_features= 
['output'])

coreml_model.save('MyCoreMLModel.mlmodel')

最新更新