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

Что такое ТензорФлоу?

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

Основные компоненты TensorFlow

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

  1. TensorFlow Core: это основной строительный блок TensorFlow, предоставляющий набор операций, которые можно использовать для создания и запуска графов потоков данных. Он включает в себя функции для обработки данных, линейной алгебры и нейронных сетей.
  2. Keras: это высокоуровневый API, предоставляющий простой в использовании интерфейс для создания и обучения нейронных сетей. Его можно использовать с TensorFlow в качестве серверной части или с другими библиотеками машинного обучения, такими как Theano или CNTK.
  3. Оценщики: это высокоуровневый API, предоставляющий простой интерфейс для построения и обучения моделей машинного обучения. Это позволяет разработчикам абстрагироваться от низкоуровневых деталей процесса обучения модели и сосредоточиться на высокоуровневой архитектуре модели.
  4. TensorFlow Serving: это система для развертывания моделей машинного обучения в рабочей среде. Это позволяет разработчикам создавать масштабируемые, готовые к работе системы, которые могут предоставлять прогнозы в режиме реального времени.

Синтаксис TensorFlow

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

import tensorflow as tf

# define the data flow graph
a = tf.constant(2)
b = tf.constant(3)
c = tf.add(a, b)

# run the graph and print the result
with tf.Session() as sess:
    result = sess.run(c)
    print(result)

В этом примере мы определяем простой граф потока данных, который добавляет две константы (a и b) с помощью операции tf.add. Затем мы запускаем график с помощью сеанса TensorFlow и печатаем результат. Результатом этого кода является 5, который является результатом сложения двух констант.

TensorFlow для приложений машинного обучения

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

Классификация

Классификация — это обычная задача машинного обучения, которая включает в себя прогнозирование категориальной метки для заданных входных данных. TensorFlow предоставляет несколько инструментов для построения и обучения моделей классификации, включая tf.estimator API. Вот пример того, как использовать tf.estimator API TensorFlow для построения простой модели бинарной классификации:

import tensorflow as tf
import numpy as np

# define the feature columns
feature_columns = [tf.feature_column.numeric_column("x", shape=[1])]

# define the training and evaluation input functions
train_input_fn = tf.estimator.inputs.numpy_input_fn(
    {"x": np.array([1.0, 2.0, 3.0, 4.0])}, np.array([0, 0, 1, 1]), shuffle=True, num_epochs=None)

eval_input_fn = tf.estimator.inputs.numpy_input_fn(
    {"x": np.array([5.0, 6.0, 7.0, 8.0])}, np.array([0, 1, 1, 1]), shuffle=False, num_epochs=1)

# define the model
model = tf.estimator.LinearClassifier(feature_columns=feature_columns)

# train the model
model.train(input_fn=train_input_fn, steps=1000)

# evaluate the model
eval_result = model.evaluate(input_fn=eval_input_fn)

print("\nTest set accuracy: {accuracy:0.3f}\n".format(**eval_result))

В этом примере мы определяем столбцы функций, которые будут использоваться в качестве входных данных для модели. Затем мы определяем входные функции обучения и оценки, которые преобразуют данные в формат, требуемый tf.estimator API. Затем мы определяем модель как линейный классификатор и обучаем ее с помощью обучающей входной функции. Наконец, мы оцениваем модель, используя функцию ввода оценки, и печатаем точность. В этом случае модель достигает точности 0,750 на тестовом наборе.

Регрессия

Регрессия — еще одна распространенная задача в машинном обучении, которая включает прогнозирование непрерывного значения для заданного ввода. TensorFlow предоставляет несколько инструментов для построения и обучения регрессионных моделей, включая tf.estimator API. Вот пример использования tf.estimator для построения простой модели линейной регрессии:

import tensorflow as tf
import numpy as np

# define the feature columns
feature_columns = [tf.feature_column.numeric_column("x", shape=[1])]

# define the training and evaluation input functions
train_input_fn = tf.estimator.inputs.numpy_input_fn(
    {"x": np.array([1.0, 2.0, 3.0, 4.0])}, np.array([2.0, 4.0, 6.0, 8.0]), shuffle=True, num_epochs=None)

eval_input_fn = tf.estimator.inputs.numpy_input_fn(
    {"x": np.array([5.0, 6.0, 7.0, 8.0])}, np.array([10.0, 12.0, 14.0, 16.0]), shuffle=False, num_epochs=1)

# define the model
model = tf.estimator.LinearRegressor(feature_columns=feature_columns)

# train the model
model.train(input_fn=train_input_fn, steps=1000)

# evaluate the model
eval_result = model.evaluate(input_fn=eval_input_fn)

print("\nTest set mean absolute error: {mae:0.3f}\n".format(**eval_result))

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

Кластеризация

Кластеризация — это задача неконтролируемого обучения, которая включает в себя группировку похожих точек данных вместе. TensorFlow предоставляет несколько инструментов для построения и обучения моделей кластеризации, включая tf.contrib.learn API. Вот пример того, как использовать tf.contrib.learn для построения простой модели кластеризации k-средних:

import tensorflow as tf
import numpy as np

# define the input function
input_fn = tf.contrib.learn.datasets.base.load_iris().data

# define the model
kmeans = tf.contrib.factorization.KMeansClustering(num_clusters=3)

# train the model
kmeans.train(input_fn)

# evaluate the model
clusters = kmeans.predict_cluster_index(input_fn)
print(clusters)

В этом примере мы загружаем набор данных радужной оболочки и определяем входную функцию как данные. Затем мы определяем модель как модель кластеризации k-средних с тремя кластерами и обучаем ее с помощью входной функции. Наконец, мы используем функцию predict_cluster_index для прогнозирования индекса кластера для каждой точки данных и печати результатов.

Глубокое обучение

Глубокое обучение — это область машинного обучения, которая включает в себя создание и обучение нейронных сетей с несколькими уровнями. TensorFlow предоставляет несколько инструментов для создания и обучения моделей глубокого обучения, включая tf.keras API. Вот пример того, как использовать tf.keras API TensorFlow для создания простой нейронной сети для классификации изображений:

import tensorflow as tf
from tensorflow import keras
import numpy as np

# define the input shape and number of classes
input_shape = (28, 28, 1)
num_classes = 10

# load the MNIST dataset
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()

# preprocess the data
x_train = x_train.astype('float32') / 255.0
x_test = x_test.astype('float32') / 255.0

# convert the labels to one-hot encoding
y_train = keras.utils.to_categorical(y_train, num_classes)
y_test = keras.utils.to_categorical(y_test, num_classes)

# define the model architecture
model = keras.Sequential([
    keras.layers.Flatten(input_shape=input_shape),
    keras.layers.Dense(128, activation='relu'),
    keras.layers.Dense(num_classes, activation='softmax')
])

# compile the model
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

# train the model
model.fit(x_train, y_train, epochs=5, validation_data=(x_test, y_test))

# evaluate the model
test_loss, test_acc = model.evaluate(x_test, y_test)
print('Test accuracy:', test_acc)

В этом примере мы сначала определяем входную форму и количество классов для задачи классификации изображений. Затем мы загружаем набор данных MNIST, предварительно обрабатываем данные, масштабируя значения пикселей от 0 до 1, и преобразуем метки в однократное кодирование. Затем мы определяем модель нейронной сети, которая состоит из выравнивающего слоя, скрытого слоя со 128 узлами и активацией ReLU и выходного слоя с активацией softmax. Затем мы компилируем модель с категориальной функцией кросс-энтропийных потерь, оптимизатором Адама и метрикой точности. Мы обучаем модель в течение пяти эпох на обучающих данных и проверяем тестовые данные. Наконец, мы оцениваем модель на тестовых данных и печатаем точность. В этом случае модель достигает точности 0,977 на тестовом наборе.

Заключение

TensorFlow — это мощная и гибкая библиотека для машинного обучения на Python. Он предоставляет ряд инструментов для создания, обучения и развертывания моделей машинного обучения, включая модели глубокого обучения. В этой статье мы представили введение в использование TensorFlow для машинного обучения в Python, включая его основные компоненты, синтаксис и приложения. Мы также предоставили практические примеры того, как использовать TensorFlow для классификации, регрессии, кластеризации и задач глубокого обучения. Благодаря простым в использовании API, обширной документации и активному сообществу TensorFlow — отличный выбор для тех, кто хочет начать работу с машинным обучением в Python.

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

Дополнительные материалы на PlainEnglish.io.

Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .

Заинтересованы в масштабировании запуска вашего программного обеспечения? Ознакомьтесь с разделом Схема.