Создание и обслуживание вашей первой модели машинного обучения – 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

Your email address will not be published. Required fields are marked *