Будущее за машинным обучением… Сколько раз вы это слышали? Однако мы всегда рассматриваем поле как таинственный хрустальный шар, никогда не понимая, что происходит или как выполнить задачу. От аэрокосмической техники (это моя область!!) до компьютерного зрения ML — это мощный инструмент для инженеров, позволяющий более эффективно моделировать прогностическую информацию.

В этом уроке я постараюсь научить основам машинного обучения и составить короткую программу! Мы будем конвертировать градусы Цельсия в градусы Фаренгейта, используя TensorFlow, платформу, созданную Google.

ШАГ 1. Настройте среду разработки (https://colab.research.google.com/?utm_source=scs-index).

Большинство разработчиков машинного обучения используют среду под названием Jupyter Notebook, но она требует много времени и усилий для установки, поэтому мы будем использовать Google Colab (это похоже на Google Docs, но для кода). В CoLab и Jupyter все делается в ячейках (короткие фрагменты кода).

ШАГ 2: Импорт операторов

Для этого приложения мы будем кодировать на Python и использовать библиотеку NumPy. NumPy — это библиотека Python, а это означает, что все запутанные вещи абстрагированы, что позволяет нам легче создавать сложные приложения. TensorFlow — это фреймворк, разработанный Google для упрощения сложных алгоритмов ML до более управляемого фрагмента информации.

import tensorflow as tf #imp to code each line in a cell

По мере прохождения процесса запускайте каждую ячейку итеративно. Уникальность Google Colab — «клеточный» метод программирования. Это снижает сложность и позволяет разработчикам, таким как вы, более легко создавать приложения.

import numpy as np
import logging
logger = tf.get_logger()
logger.set_Level(logging.ERROR)

ШАГ 3: Данные для обучения

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

celsius_q    = np.array([-40, -10,  0,  8, 15, 22,  38],  dtype=float)
fahrenheit_a = np.array([-40,  14, 32, 46, 59, 72, 100],  dtype=float)
for i,c in enumerate(celsius_q):
  print("{} degrees Celsius = {} degrees Fahrenheit".format(c,      fahrenheit_a[i]))

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

(celsius to fahrenheit) F = 1.8C + 32

Однако компьютер не знает этой связи. Он пытается пробовать и ошибаться на пути к успеху.

ШАГ 4: Постройте модель

l0 = tf.keras.layers.Dense(units=1, input_shape=[1])

Эта строка говорит о том, что алгоритм должен построить один вход и один выход. Для более сложных приложений «единицы» могут быть установлены на 128 или даже больше.

model = tf.keras.Sequential([l0])

ШАГ 5: Компиляция с функцией потерь

model.compile(loss='mean_squared_error',
   optimizer=tf.keras.optimizers.Adam(0.01))

Функция потерь указывает допустимую погрешность, которую может обеспечить результат. Большинство алгоритмов нацелены на ошибку от 0,1 до 0,001.

ШАГ 6: Модель поезда

history = model.fit(celsius_q, fahrenheit_a, epochs=500, verbose=False)
print("Finished training the model")

На этом этапе мы вызываем две переменные (C и F) и устанавливаем «эпоху», или количество раз, которое алгоритм будет запускать. Очевидно, что чем больше эпох вы проведете, тем точнее будет ваша модель.

ШАГ 7. Просмотр данных тренировки

import matplotlib.pyplot as plt
plt.xlabel('Epoch Number')
plt.ylabel("Loss Magnitude")
plt.plot(history.history['loss'])

Алгоритм начинается как неточный, но быстро приближается к нулевой величине потерь. Это подчеркивает, что чем больше «эпох» вы запустите, тем точнее станет ваша модель.

ШАГ 8: Попробуйте сами!

Вы сделали это! Это полноценная модель машинного обучения, и вы можете гордиться тем, что построили ее самостоятельно :)! Вы можете изменить 100 на любую степень, которую хотите!

print(model.predict([100])) #let me know in the comments how you did

Правильный ответ: F = ((100) x (1,8)) + 32 = 212.

ШАГ 9: Посмотрите, какие значения получил алгоритм

print("These are the layer variables: {}".format(l0.get_weights()))

Как видите, наш первый слой (1.7979) очень близок к 1.8!!! Наш второй слой также очень близок (31,952477) к 32!!

МЫ СДЕЛАЛИ ЭТО!

СПАСИБО ЗА ПРОЧТЕНИЕ! ПОДПИСЫВАЙТЕСЬ ИЛИ ПРОСТО ЛАЙК :)))