CoreML - Как создать простой класс MLFeatureProvider

У меня есть MLModel который содержит один входной столбец с именем length и один выходной столбец называется depth,

Вы даете ему длину, а она предсказывает глубину.

Я знаю, что есть другие способы сделать это, но это для всей цели изучения CoreML.

Мне нужно построить MLFeatureProvider класс, чтобы получить эту длину и вывести глубину.

Я не уверен, как создать этот класс, потому что я впервые имею дело с 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
    }
  }

}

Я не уверен, что этот класс удаленно правильный.

Если это правильно, то как \\1 быть написано?

2 ответа

Решение

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
  }
}

Что-то вроде этого:

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 учебный класс.

Другие вопросы по тегам