CoreML - обучение модели устройства
В настоящее время я создаю привет, чтобы получить представление о замечательных возможностях CoreML и CreateML. Моя цель - использовать пример таблицы данных Apple в моем проекте hello world, чтобы предсказать жанр лирики, используя заданный параметр, такой как автор, количество страниц и заголовок:
let data: [String: MLDataValueConvertible] = [
"title": ["Alice in Wonderland", "Hamlet", "Treasure Island", "Peter Pan"],
"author": ["Lewis Carroll", "William Shakespeare", "Robert L. Stevenson", "J. M. Barrie"],
"pageCount": [124, 98, 280, 94],
"genre": ["Fantasy", "Drama", "Adventure", "Fantasy"]
]
Я смог создать mlmodel, используя CreateML на игровой площадке с этими дополнительными строками кода:
let bookTable = try MLDataTable(dictionary: data)
let genreRegressor = try MLRegressor(trainingData: bookTable, targetColumn: "genre")
let meta = MLModelMetadata(author: "John Doe", shortDescription: "A model used to determine the genre of a book.", version: "1.0")
try genreRegressor.write(to: URL(fileURLWithPath: "/Path/MyModel.mlmodel"), metadata: meta)
Таким образом, вы можете предоставить ввод, такой как заголовок, автор, а также количество страниц, и модель будет предсказывать жанр как вывод, используя следующие строки кода:
let model = MyModel().model
// Create the input
let modelInput = MyModelInput(author: "Mark Twain", title: "Tom Sawyer", pageCount: 245)
// Predict the genre
let modelOutput = try? model.prediction(from: modelInput)
let genre = modelOutput?.featureValue(for: "genre")
print(genre)
Теперь я хотел бы сделать эту модель создания / обучения на устройстве, чтобы создать новую или обновить существующую модель каждый раз, когда пользователь добавляет новые данные в приложение. Я вставил код в свое приложение, но, к сожалению, необходимая среда CreateML недоступна на устройстве.
Я читал о табличной классификации и обучении устройств, а также пробовал пример интеллекта смайликов, но, к сожалению, я не смог создать свою собственную табличную классификацию на устройстве. Но благодаря информации, которую я смог собрать из этих статей, похоже, что это возможно, потому что набор данных очень мал, а необходимые вычисления очень просты и быстры. Существующие примеры, такие как Emoji Intelligence, TouchID или приложение "Фото", показывают, что это должно быть возможно в это время.
Я был бы очень рад, если бы у кого-нибудь были примеры или советы о том, как проводить обучение на устройстве для какого-либо примера (также классификации изображений и т. Д.), Я не фокусируюсь только на табличных данных.
Заранее спасибо!
1 ответ
В настоящее время ваши варианты:
- использовать шейдеры Metal Performance для тренировки на устройстве
- написать свой собственный учебный код
Ни один из них не совместим с Core ML (хотя, если вы действительно этого хотите, вы можете написать свой собственный файл mlmodel, а затем скомпилировать его на устройстве).