CoreML – 如何创建一个简单的 MLFeatureProvider class

CoreML – How to create a simple MLFeatureProvider class

我有一个 MLModel,其中包含一个名为 length 的输入列和一个名为 depth 的输出列。

你给它一个长度,它就预测一个深度。

我知道还有其他方法可以做到这一点,但这是为了学习 CoreML 的全部目的。

我需要构建一个 MLFeatureProvider class 来获得该长度并输出深度。

我不确定如何创建那个 class 因为这是我第一次处理 CoreML 并且因为像往常一样,Apple 不关心创建像样的文档。

这就是我所拥有的

class FeatureProviderX: MLFeatureProvider {
  var featureNames: Set<String> {
    get {
      return  ["length", "depth"]
    }
  }

  func featureValue(for featureName: String) -> MLFeatureValue? {
    guard featureName == "length" else {
      return MLFeatureValue(????????????) \1
    }
  }

}

我不确定这个 class 是否正确。

如果正确,\1应该怎么写?

像这样:

class FeatureProviderX: MLFeatureProvider {
  let length: Double

  init(length: Double) {
    self.length = length
  }

  func featureValue(for featureName: String) -> MLFeatureValue? {
    guard featureName == "length" else {
      return MLFeatureValue(double: length)
    }
  }

  ...

要使用它进行预测,请创建 FeatureProviderX 的新实例并将其传递给您的 MLModel class。

Matthijs Hollemans 在正确的轨道上,并为我提供了解决该问题的线索,但不幸的是,他的解决方案缺少很多东西。

经过一段时间我找到了正确的解决方案...

class FeatureProviderX: MLFeatureProvider {

  var featureNames: Set<String> {
    get {
      return  ["length"]
    }
  }

  var sorteio: Double

  init(length: Double) {
    self.length = length
  }

  func featureValue(for featureName: String) -> MLFeatureValue? {
    if featureName == "length" {
      return MLFeatureValue(double: length)
    }
    return nil
  }
}