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