Прогнозируйте цены на жилье на своем смартфоне
Если вам нужно развернуть модель машинного обучения на мобильном устройстве, это становится сложной задачей, поскольку на устройстве ограничены пространство и вычислительная мощность. Нет сомнений в том, что модели машинного обучения страдают от таких больших размеров моделей и большой задержки при таргетинге на мобильные устройства.
Однако есть методы уменьшения размера или повышения производительности, чтобы они подходили и работали на мобильных устройствах (дополнительные сведения об этих методах см. По ссылкам ниже). Следует отметить, что, несмотря на эти проблемы, модели машинного обучения в настоящее время развертываются на мобильных устройствах.
В этой статье мы собираемся обсудить, как реализовать модель машинного обучения прогнозирования цен на жилье для мобильных устройств с помощью TensorFlow Lite. Мы узнаем, как обучить нейронную сеть TensorFlow Lite регрессии, которая обеспечивает непрерывное прогнозирование стоимости, особенно в контексте цен на жилье.
TensorFlow Lite - это платформа глубокого обучения с открытым исходным кодом для вывода данных с мобильных устройств. По сути, это набор инструментов, которые помогут нам запускать модели TensorFlow на мобильных, встроенных устройствах и устройствах Интернета вещей. TensorFlow Lite обеспечивает логический вывод машинного обучения на устройстве с малой задержкой и небольшим двоичным размером.
TensorFlow Lite состоит из двух основных компонентов:
- Интерпретатор TensorFlow Lite: интерпретатор запускает оптимизированные модели Lite на многих различных типах оборудования, включая мобильные телефоны, встроенные устройства и микроконтроллеры.
- Конвертер TensorFlow Lite: конвертер в основном преобразует модели TensorFlow в эффективную форму, которая будет использоваться интерпретатором. Это может привести к оптимизации для улучшения двоичного размера, а также производительности.
Выполнение
Давайте посмотрим, шаг за шагом, как реализовать нашу модель TensorFlow Lite с использованием известной библиотеки глубокого обучения TensorFlow.
TensorFlow - это библиотека глубокого обучения с открытым исходным кодом, созданная Google. Это символьная математическая библиотека, которая также используется для построения глубоких нейронных сетей.
Установка и импорт:
Перво-наперво, давайте импортируем необходимые библиотеки. Сначала нам нужно установить библиотеку TensorFlow.
Вы можете установить TensorFlow с помощью pip:
pip install TensorFlow
Затем давайте вместе с TensorFlow импортируем несколько библиотек, необходимых для нашего проекта:
import tensorflow as tf import numpy as np import pandas as pd
Загрузите данные:
В этом посте мы собираемся использовать набор данных о ценах на жилье в Бостоне. Этот набор данных доступен как часть модуля набора данных Keras. Чтобы использовать этот набор данных, нам нужно импортировать класс жилья Boston, а затем использовать метод load data
поверх него. Этот метод выведет 4 значения: x_train
, y_train
, x_test
и y_test
.
x_train
представляет функции обучающих данных, а y_train
представляет метку обучающих данных. x_test
представляет функции данных тестирования, а y_train
представляет метку данных тестирования.
from tensorflow.keras.datasets import boston_housing (x_train, y_train), (x_test, y_test) = boston_housing.load_data()
Мы можем видеть снимок данных о ценах на жилье в Бостоне, как показано выше. Эти данные собираются из домов в пригородах Бостона, штат Массачусетс. Мы собираемся построить модель, которая сможет предсказать стоимость данного дома (домов). целевая переменная 'MEDV'
- это переменная, которую мы хотим прогнозировать. Остальные столбцы - это функции.
Фрейм данных Boston содержит следующие 14 столбцов:
crim - уровень преступности на душу населения по городам.
zn - доля земли под жилую застройку, предназначенная для участков площадью более 25 000 кв. футов.
indus - доля акров, не относящихся к розничной торговле, на город.
chas - фиктивная переменная Charles River (= 1, если участок ограничивает реку; 0 в противном случае).
nox - концентрация оксидов азота (частей на 10 миллионов).
rm - среднее количество комнат в доме.
возраст - доля домов, построенных до 1940 года, занимаемых владельцами.
dis - взвешенное среднее расстояние до пяти бостонских центров занятости.
rad - индекс доступности радиальных магистралей.
налог - полная ставка налога на имущество за 10 000 долларов США.
ptratio - соотношение учеников и учителей по городам.
черный - 1000 (Bk - 0,63) ², где Bk - доля черных по городам.
lstat - более низкий статус населения (в процентах).
medv - средняя стоимость домов, занимаемых владельцами, в 1000 долларов США. - целевая переменная.
Определить модель:
На этом этапе мы готовы определить нашу модель. Здесь мы будем использовать последовательную модель Кераса. Модель состоит из трех слоев. Все определенные слои являются плотными. Последний слой - это выходной слой.
model = tf.keras.models.Sequential() model.add(tf.keras.layers.Dense(10, activation='relu', input_shape=[13])) model.add(tf.keras.layers.Dense(20, activation='relu')) model.add(tf.keras.layers.Dense(1))
Обратите внимание, что выбранная функция активации - это слой ReLU, что означает выпрямленную линейную единицу. ReLU - это наиболее часто используемая функция активации для регрессионных моделей машинного обучения. Функция возвращает значение 0, если она предоставила какой-либо отрицательный ввод, и для любого положительного значения эта функция возвращает то же значение.
Скомпилировать модель
После определения модели она готова к компиляции. При компиляции модели используются эффективные числовые библиотеки в серверной части TensorFlow.
При компиляции модели мы должны указать необходимые свойства, такие как оптимизатор и функцию потерь. Оптимизаторы - это алгоритмы, используемые для изменения свойств модели, таких как веса и скорость обучения, чтобы уменьшить потери при обучении. Здесь используется оптимизатор rmsprop, а метод потерь - среднеквадратичная ошибка.
model.compile(optimizer='rmsprop', loss='mean_squared_error')
Модель поезда
После компиляции самое время обучить модель. Для обучения воспользуемся методом fit
. Обратите внимание, что мы передаем функции обучения, метки обучения и количество эпох в качестве параметров методу fit
. Эпоха в машинном обучении указывает количество проходов, завершенных всем набором обучающих данных в процессе обучения.
Преобразовать в TF Lite
После обучения модели нам нужно преобразовать ее в формат модели TensorFlow Lite. Для этого нам нужно использовать класс TFLiteConverter
, который мы описали ранее.
# Convert the model to tf lite model converter = tf.lite.TFLiteConverter.from_keras_model(model) housing_tflite_model = converter.convert()
Сохранить модель
Затем мы собираемся сохранить модель в файл с именем housing_model.tflite
. Пока это модель в формате TensorFlow Lite, TensorFlow Lite сможет загружать и запускать модель независимо от расширения файла модели.
# Save the TF Lite model. with tf.io.gfile.GFile('housing_model.tflite', 'wb') as f: f.write(housing_tflite_model)
Загрузите модель TFLite
После сохранения модели пора использовать ее для прогнозов. Первым шагом для начала прогнозирования является загрузка модели. Мы можем загрузить модель с помощью интерпретатора, как показано ниже:
# Load the TFLite model interpreter = tf.lite.Interpreter(model_path="housing_model.tflite") interpreter.allocate_tensors() input_details = interpreter.get_input_details() output_details = interpreter.get_output_details()
Установите входные данные и прогнозируйте
После загрузки модели нам нужно установить входные данные. Здесь мы используем одну точку данных из тестовых данных для прогнозирования. Эти входные данные представлены x_test[0:1]
Как видите, мы смогли успешно спрогнозировать стоимость жилья для заданной точки исходных данных!
Конечные заметки
В этой статье мы обсудили, как реализовать модель машинного обучения прогнозирования цен на жилье для мобильных устройств с помощью TensorFlow Lite.
Следует отметить, что для использования модели TensorFlow Lite мы должны сначала построить модель TensorFlow, а затем преобразовать ее в TensorFlow Lite. Это потому, что мы не можем обучить модель с помощью TensorFlow Lite. Таким образом, мы должны начать с обычной модели TensorFlow, а затем преобразовать ее.
Я надеюсь, что эта статья помогла вам понять, как мы можем более подробно реализовать модель TensorFlow Lite для мобильных устройств.
Ваше здоровье!
Примечание редактора: Heartbeat - это онлайн-публикация и сообщество, созданное авторами и посвященное предоставлению первоклассных образовательных ресурсов для специалистов по науке о данных, машинному обучению и глубокому обучению. Мы стремимся поддерживать и вдохновлять разработчиков и инженеров из всех слоев общества.
Независимая редакция, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по обработке данных и группам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим участникам и не продаем рекламу.
Если вы хотите внести свой вклад, отправляйтесь на наш призыв к участникам. Вы также можете подписаться на наши еженедельные информационные бюллетени (Deep Learning Weekly и Comet Newsletter), присоединиться к нам в » «Slack и подписаться на Comet в Twitter и LinkedIn для получения ресурсов, событий и гораздо больше, что поможет вам быстрее и лучше строить модели машинного обучения.