【发布时间】:2020-12-19 00:08:33
【问题描述】:
我有一个已转换为 CoreML 的 PyTorch 模型。在 PyTorch 中,推断的潜在向量的值范围在 ±1.6 左右,但转换后的 mlmodel 变化幅度高达 ±55.0。是什么导致了这种巨大的差异?转换非常简单:
encoder = Encoder_CNN(latent_dim, n_c)
enc_fname = os.path.join(models_dir, encoder.name + '_153.pth.tar')
encoder.load_state_dict(torch.load(enc_fname, map_location={'cuda:0': 'cpu'}))
encoder.cpu()
encoder.eval()
img_in = torch.rand(1, 1, 28, 28).cpu()
traced_encoder_model = torch.jit.trace(encoder, img_in)
traced_encoder_model.save("{}_encoder_mobile_{}_{}.pt".format(model_type, latent_dim, n_c))
coreml_encoder = ct.convert(traced_encoder_model, inputs=[ct.ImageType(name=name, shape=img_in.shape)])
coreml_encoder.save("{}_encoder_{}_{}.mlmodel".format(model_type, latent_dim, n_c))
【问题讨论】: