我有这个模型: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')