Это будет первая часть из трех частей об использовании машинного обучения в робототехнике.

Мы разобьем его на 3 этапа: создадим облегченную модель tensorflow, переместим эту модель в приложение, а затем запустим модель на мобильном устройстве. Прежде чем мы начнем, что такое tensorflow lite? Вот фрагмент из официальной документации

TensorFlow Lite — это набор инструментов, помогающих разработчикам запускать модели TensorFlow на мобильных, встроенных устройствах и устройствах IoT. Это позволяет делать выводы машинного обучения на устройстве с малой задержкой и небольшим размером двоичного файла.

По сути, это позволяет обучать модели на компьютере или сервере, а затем развертывать их в облегченную модель, которую можно запускать на смартфоне. Tensorflow lite будет очень важен в этой серии, поэтому мы настоятельно рекомендуем прочитать документацию, найденную здесь:



import tensorflow as tf
from tensorflow import keras
from tensorflow.python.keras import Sequential
from tensorflow.python.keras.layers import Dense

Сейчас мы создадим простую модель, которая просто предсказывает результат функции y = 2x-1. Позже в этой серии мы рассмотрим использование других типов входных данных и более сложных моделей.

Давайте определим наши входы и выходы как массив длины 6:

x = [-1, 0, 1, 2, 3, 4]
y = [-3, -1, 1, 3, 5, 7]

Мы создадим последовательнуюмодель с одним слоем Dense с одним нейроном:

model = Sequential()
model.add(Dense(units=1, input_shape=[1]))

Затем мы компилируем модель с оптимизатором sgd(приличный стохастический градиент) и потерей mse (среднеквадратическая ошибка) и подгоняем модель к данным за 50 эпох:

model.compile(optimizer='sgd',loss='mean_squared_error')
model.fit(x, y, epochs=500)

Обучение этой модели занимает всего несколько секунд из-за ее простоты. Обратите внимание, что эта модель не предназначена для обеспечения наилучшей производительности, она предназначена только для использования в качестве тестовой модели с TF Lite. Вот пример вывода ввода 10:

print(model.predict([10]))
[[18.978474]]

Это значение очень близко к ожидаемому значению 19, поэтому мы уверены, что наша модель работает. Теперь мы увидим, как мы можем преобразовать это в модель TF Lite.

Начнем с создания облегченного конвертера tensorflow и использования его для преобразования модели:

converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()

Последний шаг — сохранить эту модель, чтобы мы могли использовать ее позже:

with tf.io.gfile.GFile('tf_models/test.tflite', 'wb') as f:
  f.write(tflite_model)

Убедитесь, что вы изменили имя папки в зависимости от того, где вы хотите его сохранить. В этом случае он сохраняется в папке с именем tf_models как test.tflite. Мы закончили с первым этапом этой серии.

Шухул Муджу — студенческий посол в программе студенческих послов Inspirit AI. Inspirit AI — это довузовская программа повышения квалификации, которая знакомит любознательных старшеклассников со всего мира с ИИ через живые онлайн-классы. Узнайте больше на https://www.inspiritai.com/.