Scraper Обновлено: 14 June, 2019

Пошаговое руководство по установке Tensorflow 2

  Перевод   Ссылка на автора

TensorFlow 2 собирается изменить ландшафт Deep Learning. Это сделало,

  • построение модели проще,
  • развертывание производства на любой платформе более надежно, и
  • позволяет мощные эксперименты для исследований.

Благодаря этому Deep Learning станет более популярным в различных областях исследований и промышленности.

TensorFlow 2 имеет встроенный API Keras. Keras - чрезвычайно популярный высокоуровневый API для построения и обучения моделей глубокого обучения. Прежде чем идти вперед, важно знать,

  • TensorFlow 1.x также поддерживает Keras, но в 2.0 Keras тесно интегрирована с остальной частью платформы TensorFlow. 2.0 обеспечиваетне замужемAPI высокого уровня, чтобы уменьшить путаницу и обеспечить расширенные возможности.
  • Keras, обычно используемый в настоящее время, является независимым проектом с открытым исходным кодом, найденным на www.keras.io (Июнь 2019 г.) Однако Keras - это API-спецификация, которая теперь также доступна в TensorFlow (см. [ 1 ] для деталей).

Я рекомендую прочитать [ 1 ] а также [ 2 ] узнать больше информации о преимуществах TensorFlow 2.0. Таким образом, TF 2.0 обеспечил простоту реализации наряду с огромной вычислительной эффективностью и совместимостью с любой платформой, такой как Android, iOS и встроенными системами, такими как Raspberry Pi и Edge TPU.

Достижение этого было трудным прежде и требовало затрат времени на поиск альтернативных путей. Так как TensorFlow 2 привел их всех, необходимо перейти на него раньше, чем позже.

Для этого здесь мы изучим установку и настройку TensorFlow 2.0.

Предпосылки

Вариант 1: Python 3.4+ через Анаконду

Anaconda с Jupyter предоставляет более простой подход для установки Python и работы над ним.

Установка Anaconda относительно проста. Перейдите по этой ссылке с последней версией Python 3.4+: https://jupyter.org/install

Похожий наpipс Анакондой мы имеемcondaдля создания виртуальных сред и установки пакетов.

Вариант 2: Python (без Анаконды)

а. Установите Python 3.4+

Проверьте ваши текущие версии.

$ python --version

или,

$ python3 --version

У меня разные Python на моем Mac (Python 3.6 на Anaconda) и Ubuntu (Python 3.7). Вывод, который я вижу на них,

Python 3.6.8 :: Anaconda custom (x86_64)# MacPython 3.7.1# Ubuntu

Либо Python внутри Анаконды, либо иначе будет работать.

Если ваша версияне3.4+, установите его следующим образом.

$ brew update
$ brew install python # Installs Python 3$ sudo apt install python3-dev python3-pip

б. Установить virtualenv

virtualenvтребуется для создания виртуальной среды. Его требования объяснены в следующем разделе.

Mac OS

$ sudo pip3 install -U virtualenv# system-wide install

Ubuntu

$ sudo pip3 install -U virtualenv# system-wide install

Заметка:pip(вместо тогоpip3) также иногда используется. Если не уверены между двумя, используйтеpip3, Вы не ошибетесь сpip3, Если вы хотите знать, можете ли вы использоватьpip, запустите следующее

$ pip3 --version
pip 19.1.1 from /Users/inferno/anaconda/lib/python3.6/site-packages/pip (python 3.6)$ pip --version
pip 19.1.1 from /Users/inferno/anaconda/lib/python3.6/site-packages/pip (python 3.6)

В моей системе версии одинаковы для обоихpipа такжеpip3, Поэтому я могу использовать любой из них.

Далее мы рассмотрим шаги установки с обоими.

Шаг 1. Создайте виртуальную среду на Python.

Почему мы хотим виртуальную среду?

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

Это означает, что мы можем хранить разные версии одного и того же пакета, например, мы можем использовать scikit-learn 0.1 для одного проекта и scikit-learn 0.22 для другого проекта в той же системе, но в разных виртуальных средах.

Создание виртуальной среды

Ubuntu / Mac (Python без Анаконды)

$ virtualenv --system-site-packages -p python3 tf_2

Приведенная выше команда создаст виртуальную средуtf_2, Понимание команды,

  • virtualenvсоздаст виртуальную среду.
  • --system-site-packagesпозволяет проекты в виртуальной средеtf_2доступ к глобальным сайт-пакетам. Настройка по умолчанию не разрешает этот доступ (--no-site-packagesраньше использовался для этой настройки по умолчанию, но теперь устарел.)
  • -p python3используется для установки интерпретатора Python дляtf_2, Этот аргумент можно пропустить, еслиvirtualenvбыл установлен с Python3. По умолчанию это интерпретатор python для виртуальной среды. Другой вариант для установки Python3.x в качестве интерпретатора$ virtualenv --system-site-packages --python=python3.7 tf_2, Это дает больше контроля.
  • tf_2это имя виртуальной среды, которую мы создали. Это создает физический каталог в месте расположения виртуальных сред. это/tf_2Каталог содержит копию компилятора Python и все пакеты, которые мы установим позже.

Конда на Ubuntu / Mac (Python от Анаконды)

Если вы используете Conda, вы можете создать виртуальную среду как,

$ conda create -n tf_2

Приведенная выше команда также создаст виртуальную средуtf_2, В отличие от ранее, нам не требуется устанавливать другой пакет для создания виртуальной среды. ВстроенныйcondaКоманда обеспечивает это.

Понимание команды,

  • condaможет использоваться для создания виртуальных сред, установки пакетов, вывода списка установленных пакетов в среде и т. д. Короче,condaвыполняет операции, которыеpipа такжеvirtualenvделает Тем не мение,condaне заменяетpipтак как некоторые пакеты доступны наpipно не наconda,
  • createиспользуется для создания виртуальной среды.
  • -nэто аргумент, специфичный дляcreate,-nиспользуется для названия виртуальной среды. Значениеnто есть имя среды, здесьtf_2,
  • Дополнительные полезные аргументы: аналогично--system-site-packagesвvirtualenv,--use-localможет быть использован.

Шаг 2. Активируйте виртуальную среду.

Активируйте виртуальную среду.

Ubuntu / Mac (Python без Анаконды)

$ source tf_2/bin/activate

Конда на Ubuntu / Mac (Python от Анаконды)

$ conda activate tf_2

После активации терминал изменится на этот(tf_2) $,

Шаг 3. Установите TensorFlow 2.0.

Следующие инструкции одинаковы для обеих опций Python.

Перед началом установки TensorFlow мы обновимpip,

(tf_2) $ pip install --upgrade pip

Теперь установите TensorFlow.

(tf_2) $ pip install --upgrade tensorflow==2.0.0-beta1

tensorflowПриведенный выше аргумент устанавливает версию 2.0.0-бета1 только для процессора.

Выберите подходящую версию TensorFlow из https://www.tensorflow.org/install/pip,

На момент написания этой статьи у нас был тензор потока 2.0.0-бета1. Это рекомендуется. Мы можем изменить аргумент на один из следующих, основываясь на нашем требовании.

  • tensorflow==2.0.0-beta1-Preview TF 2.0 Beta build только для процессора (рекомендуемые).
  • tensorflow-gpu==2.0.0-beta1-Preview TF 2.0 Бета-версия с Поддержка GPU,
  • tensorflow-Последний стабильный выпуск только для процессора,
  • tensorflow-gpu- Последний стабильный выпуск с Поддержка GPU,
  • tf-nightly- Предварительный просмотр ночной сборки только для процессора.
  • tf-nightly-gpu-Предыдущий ночной билд с Поддержка GPU,

Примечание: мы будем использоватьpip installи для Конды. TensorFlow не доступен сconda,

Шаг 4. Проверьте установку.

Чтобы быстро проверить установку через терминал, используйте

(tf_2) $ python -c "import tensorflow as tf; x = [[2.]]; print('tensorflow version', tf.__version__); print('hello, {}'.format(tf.matmul(x, x)))"

Вывод будет (игнорируя системные сообщения),

tensorflow version 2.0.0-beta1
hello, [[4.]]

Обратите внимание на вывод версии TensorFlow. Если это не та версия, которую вы установили (в данном случае 2.0.0-бета1), значит, что-то пошло не так. Скорее всего, ранее был установлен TensorFlow и / или текущая установка не удалась.

Пример TensorFlow 2.0

Мы будем тестировать и изучать TensorFlow 2.0 с MNIST (fashion_mnist)Пример классификации изображений.

import matplotlib.pyplot as plt

import tensorflow as tf
layers = tf.keras.layers

import numpy as np

print(tf.__version__)

Убедитесь, чтоtf.__version__выходы 2.х. Если версия старше, проверьте установку или виртуальную среду.

Скачатьfashion_mnistданные изtfоткрыть наборы данных и предварительно обработать его.

mnist = tf.keras.datasets.fashion_mnist(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

Чтобы ознакомиться с данными, мы приведем несколько примеров из них.

class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat', 'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']plt.figure(figsize=(10,10))
for i in range(25):
plt.subplot(5,5,i+1)
plt.xticks([])
plt.yticks([])
plt.grid(False)
plt.imshow(x_train[i], cmap=plt.cm.binary)
plt.xlabel(class_names[y_train[i]])
plt.show()

Теперь мы будем строить модельпослойный,

model = tf.keras.Sequential()
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10, activation='softmax'))model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)

Обратите внимание, что эта модель предназначена только для демонстрации и, следовательно, обучена всего за пять эпох.

Теперь мы проверим точность модели на тестовых данных.

model.evaluate(x_test, y_test)

Мы представим одно из предсказаний. Мы будем использовать некоторые UDF из [ 3 ].

def plot_image(i, predictions_array, true_label, img):
predictions_array, true_label, img = predictions_array[i], true_label[i], img[i]
plt.grid(False)
plt.xticks([])
plt.yticks([])

plt.imshow(img, cmap=plt.cm.binary) predicted_label = np.argmax(predictions_array)

if predicted_label == true_label:
color = 'blue'
else:
color = 'red'

plt.xlabel("{} {:2.0f}% ({})".format(class_names[predicted_label],
100*np.max(predictions_array),
class_names[true_label]),
color=color)def plot_value_array(i, predictions_array, true_label):
predictions_array, true_label = predictions_array[i], true_label[i]
plt.grid(False)
plt.xticks([])
plt.yticks([])
thisplot = plt.bar(range(10), predictions_array, color="#777777")
plt.ylim([0, 1])
predicted_label = np.argmax(predictions_array)

thisplot[predicted_label].set_color('red')
thisplot[true_label].set_color('blue')

Мы найдем прогноз, то есть вероятность каждого изображения, принадлежащего каждому из 10 классов, для тестовых изображений.

predictions = model.predict(x_test)i = 0
plt.figure(figsize=(6,3))
plt.subplot(1,2,1)
plot_image(i, predictions, y_test, x_test)
plt.subplot(1,2,2)
plot_value_array(i, predictions, y_test)
plt.show()

Как мы можем видеть на графике выше, вероятность предсказания «ботинка лодыжки» самая высокая. Для дальнейшего подтверждения мы выводим прогнозируемую метку как,

predicted_label = class_names[np.argmax(predictions[0])]
print('Actual label:', class_names[y_test[0]])
print('Predicted label:', predicted_label)

Шаг 5. Деактивировать виртуальную среду

Перед закрытием мы отключим виртуальную среду.

Дляvirtualenvиспользование,

(tf_2) $ deactivate

Дляcondaиспользование,

(tf_2) $ conda deactivate

Репозиторий GitHub с примером MNIST на TensorFlow 2.0 Вот,

Вывод

  • TensorFlow 2.0 предоставляет простые в использовании возможности keras API, например, послойное моделирование.
  • Мы узнали об установке TensorFlow 2.0.
  • Мы прошли настоящий пример классификации данных MNIST с TF 2.0.

Ссылки

  1. Стандартизация на Keras: руководство по API высокого уровня в TensorFlow 2.0
  2. Что будет в TensorFlow 2.0
  3. Тренируй свою первую нейронную сеть: базовая классификация

Это сообщение было первоначально размещено на medium.com 13 июня 2019 г.