Прогнозируйте цены на жилье на своем смартфоне

Если вам нужно развернуть модель машинного обучения на мобильном устройстве, это становится сложной задачей, поскольку на устройстве ограничены пространство и вычислительная мощность. Нет сомнений в том, что модели машинного обучения страдают от таких больших размеров моделей и большой задержки при таргетинге на мобильные устройства.

Однако есть методы уменьшения размера или повышения производительности, чтобы они подходили и работали на мобильных устройствах (дополнительные сведения об этих методах см. По ссылкам ниже). Следует отметить, что, несмотря на эти проблемы, модели машинного обучения в настоящее время развертываются на мобильных устройствах.





В этой статье мы собираемся обсудить, как реализовать модель машинного обучения прогнозирования цен на жилье для мобильных устройств с помощью 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 для получения ресурсов, событий и гораздо больше, что поможет вам быстрее и лучше строить модели машинного обучения.