自动生成的CoreML类使用有冲突的初始化程序

时间:2018-09-21 16:35:09

标签: ios objective-c coreml xcode10

我刚刚升级到Xcode 10.0,它似乎破坏了CoreML自动生成的网络类代码。构建项目时,我收到错误消息:

reg_net.m:94:50: No visible @interface for 'reg_netInput' declares the selector 'initWith0:'

在类中,自动生成的reg_netInput初始化程序的形式为initWith_0,但是在预测函数的主体中,代码调用initWith0。我试图将初始化程序名称更改为一致,但是无论何时构建,该代码似乎都会再次自动生成并恢复为冲突的名称。

我也尝试删除并重新导入.mlmodel文件,但没有成功。有关如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:0)

尝试通过valid identifier而不是数字"0"来更改模型的输入名称。

  

概述

     

在Core ML中,功能是模型的单个输入或输出。模型可以具有任意数量的输入要素或输出要素。每个功能都有一个名称和一个值类型,它们在功能的MLFeatureDescription中定义。模型作者使用功能描述来帮助开发人员正确集成他们的模型。每个MLFeatureDescription实例都具有只读属性,这些属性指示功能的名称,其类型以及是否可选。

     

有关功能示例,请参阅将Core ML模型集成到您的应用中。请注意,三个输入要素分别名为solarPanels,温室和大小,输出要素名为price。所有四个功能的类型均为Double。

     

MLFeatureDescription可能还包含约束,这些约束指定模型的输入和输出特征的限制。对于每个输入功能,约束条件描述了模型期望您的应用程序获得什么值。对于每个输出功能,约束条件描述了您的应用应从模型中获得什么值。您还可以编写代码来检查这些描述,然后再在应用中使用模型。

     

主题   检查功能   变量名称:字符串

     

此功能的名称。

请参阅:MLFeatureDescriptionMLFeatureDescription name