Машинное обучение (ML) — это постоянно развивающаяся область, целью которой является разработка алгоритмов, способных изучать шаблоны из данных без необходимости явного программирования. Python стал одним из самых популярных языков программирования для машинного обучения благодаря своей универсальности, простоте и богатому набору библиотек. Одной из наиболее широко используемых библиотек машинного обучения для Python является TensorFlow, программная библиотека с открытым исходным кодом для потока данных и дифференцированного программирования для различных задач. В этой статье мы представим введение в использование TensorFlow для машинного обучения в Python, включая его основные компоненты, синтаксис и приложения с практическими примерами.
Что такое ТензорФлоу?
TensorFlow — это библиотека машинного обучения, которая позволяет разработчикам создавать, обучать и развертывать модели машинного обучения. Он разработан командой Google Brain и представляет собой программное обеспечение с открытым исходным кодом, предназначенное для работы на различных платформах, включая мобильные и периферийные устройства, настольные компьютеры и кластеры серверов. TensorFlow основан на концепции графов потоков данных, где набор узлов представляет математические операции, а ребра представляют тензоры данных, протекающие между ними. В TensorFlow эти графики создаются с использованием кода Python и выполняются с использованием среды выполнения TensorFlow, которую можно оптимизировать для различных конфигураций оборудования.
Основные компоненты TensorFlow
TensorFlow состоит из нескольких компонентов, каждый из которых играет решающую роль в разработке и развертывании моделей машинного обучения. Эти компоненты включают в себя:
- TensorFlow Core: это основной строительный блок TensorFlow, предоставляющий набор операций, которые можно использовать для создания и запуска графов потоков данных. Он включает в себя функции для обработки данных, линейной алгебры и нейронных сетей.
- Keras: это высокоуровневый API, предоставляющий простой в использовании интерфейс для создания и обучения нейронных сетей. Его можно использовать с TensorFlow в качестве серверной части или с другими библиотеками машинного обучения, такими как Theano или CNTK.
- Оценщики: это высокоуровневый API, предоставляющий простой интерфейс для построения и обучения моделей машинного обучения. Это позволяет разработчикам абстрагироваться от низкоуровневых деталей процесса обучения модели и сосредоточиться на высокоуровневой архитектуре модели.
- 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 .
Заинтересованы в масштабировании запуска вашего программного обеспечения? Ознакомьтесь с разделом Схема.