Создание и обслуживание вашей первой модели машинного обучения – CodesCode
Добро пожаловать в мир машинного обучения. В этом уроке вы узнаете, как создать, обучить и использовать свою первую модель машинного обучения.
Добро пожаловать в мир машинного обучения, где компьютеры изучают данные и делают предсказания без явного программирования. В основе этой технологии лежит концепция “модели”.
Что такое модель?
В традиционном программировании мы создаем функции/методы, которые получают входные данные/параметры и возвращают результат на основе формулы. Например, представьте себе метод на языке Java, который применяет формулу y = 3x + 1
.
public int formula(int x) { return 3 * x + 1;}
Вышеуказанный код вернет следующие данные для x
и y
:
x | -1 | 0 | 1 | 2 | 3 | 4 |
---|---|---|---|---|---|---|
y | -2 | -1 | 4 | 7 | 10 | 13 |
А теперь представьте, что у вас есть не только формула, но и множество значений для x
и y
. Вы можете создать модель машинного обучения, чтобы открыть формулу и предсказывать новые значения.
В качестве примера из реальной жизни можно использовать распознавание лиц в галерее наших телефонов. У нас есть несколько входных данных (фотографии) и выходные данные (имена людей), и модель машинного обучения – это формула, которая знает, как распознавать людей. Когда вы даете имена людям на фотографиях, вы питаете модель данными, которые постоянно повторно обучаются, чтобы лучше распознавать этих людей.
Python: Язык машинного обучения
Python стал неофициальным языком машинного обучения. Его огромная экосистема библиотек, включая TensorFlow и Keras, делает его мощным инструментом для создания и обучения моделей. Если вам интересно погрузиться в мир машинного обучения, то Python – ваш верный компаньон в этом путешествии.
Наша модель
Для простоты мы будем использовать данные x
и y
вышеуказанные, чтобы обучить модель, которая будет уметь предсказывать значение y
на основе x
.
import tensorflow as tfimport numpy as npfrom tensorflow import kerasimport osdef build_model(): # Создаем модель, которая получает 1 входное значение и возвращает 1 выходное значение model = tf.keras.Sequential([keras.layers.Dense(units=1, input_shape=[1])]) # Определяем алгоритмы обучения. Пока вам не нужно об этом беспокоиться model.compile(optimizer='sgd', loss='mean_squared_error') return modeldef train_model(model, xs, ys, epochs=500): # Обучаем модель. Здесь мы указываем алгоритму попытаться найти 500 случайных формул, которые лучше всего соответствуют входным и выходным данным. model.fit(xs, ys, epochs=epochs)def predict_with_model(model, input_data): # Предсказываем с помощью обученной модели return model.predict([input_data])def save_model(model, export_path): # Сохраняем модель tf.keras.models.save_model( model, export_path, overwrite=True, include_optimizer=True, save_format=None, signatures=None, options=None )def main(): # Входные данные xs = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype=float) ys = np.array([-2.0, 1.0, 4.0, 7.0, 10.0, 13.0], dtype=float) # Строим модель model = build_model() # Обучаем модель train_model(model, xs, ys) # Предсказываем значение для x = 10. Оно будет очень близким к 31, например 30.9994 или что-то в этом роде prediction = predict_with_model(model, 10.0) print(prediction) # Сохраняем модель model_dir = "./model" version = 1 export_path = os.path.join(model_dir, str(version)) print('export_path = {}\n'.format(export_path)) save_model(model, export_path) print('\nSaved model: ' + export_path)if __name__ == "__main__": main()
Запустите указанный выше код на Python, чтобы создать, обучить и протестировать модель. Он создаст модель в директории ./model
.
Предоставление модели
Как только вы создали модель и разместили ее в директории ./model
, вы можете использовать ее как REST API. Для этого вы можете использовать образ контейнера tensorflow/serving
:
podman run -p 8501:8501 \ --name=tf_serving \ --mount type=bind,source=./model,target=/models/model -e MODEL_NAME=model \ -t tensorflow/serving
Получение результатов из модели
Когда ваш контейнер работает, вы можете отправить запрос для получения вывода. Выполните следующую команду, чтобы получить значение y
для x = 10
:
curl -d '{"instances": [[10.0]]}' \ -H "Content-Type: application/json" \ -X POST http://localhost:8501/v1/models/model:predict
Вы должны увидеть результат, аналогичный следующему:
{ "predictions": [[30.9971237] ]}
Вот и все, друзья!
Вы только что создали, обучили, предоставили и получили результаты из своей первой модели машинного обучения. Вы можете найти исходный код, использованный в этом посте, на GitHub. Не стесняйтесь задавать любые вопросы в комментариях и следите за обновлениями.
Leave a Reply