将PyTorch转换为CoreML

8yoxcaq7  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(308)

我有这样的模式: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中将第545行的round方法替换为第546行的np.round
但它在
mlmodel = ct.转换(...
与:
运行时错误:未实现操作“pythonop”的PyTorch转换函数。
我建议用可以被转换的方法重写这个模块,对吗?但是我不知道如何找到这个模块的源代码。
所以我的问题是:如果我想的方法正确,我怎样才能找到模块的来源?如果我想的方法错误,请告诉我正确的方法。

ep6jt1vc

ep6jt1vc1#

代码首先将模型加载到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')

相关问题