Краткое руководство по tensorflow

Содержание:

pip パッケージをビルドする

TensorFlow 2.x

tensorflow:master リポジトリがデフォルトで 2.x をビルドするようにアップデートされました。
Bazel をインストールし、 を使用して TensorFlow パッケージを作成します。

bazel build //tensorflow/tools/pip_package:build_pip_package

TensorFlow 1.x

マスターから TensorFlow の 1.x バージョンをビルドするには、 を使用して TensorFlow 1.x パッケージを作成します。

bazel build --config=v1 //tensorflow/tools/pip_package:build_pip_package

CPU のみ

CPU のみに対応する TensorFlow パッケージのビルダーを、 を使用して作成します。

bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package

GPU サポート

GPU に対応する TensorFlow パッケージのビルダーを作成するには、以下を使用します。

bazel build --config=opt --config=cuda --define=no_tensorflow_py_deps=true //tensorflow/tools/pip_package:build_pip_package

Bazel ビルドのオプション

ビルドの際にこのオプションを使用して、パッケージの作成時の問題(tensorflow:issue#22390)を回避します。

--define=no_tensorflow_py_deps=true

については、Bazel コマンドライン リファレンスをご覧ください。

ソースから TensorFlow をビルドすると、大量の RAM が使用される可能性があります。メモリの制約があるシステムでは、Bazel の RAM 使用量を で制限してください。

GPU サポートを含めてビルドする場合は、 を追加して、nvcc 警告メッセージを非表示にします。

パッケージをビルドする

コマンドを実行すると という名前の実行可能ファイルが作成されます。これは パッケージをビルドするプログラムです。たとえば、次のように実行すると、 パッケージが ディレクトリ内にビルドされます。

bazel-bin\tensorflow\tools\pip_package\build_pip_package C:/tmp/tensorflow_pkg

CUDA 構成と非 CUDA 構成の両方を同じソースツリー下にビルドすることも可能ですが、同じソースツリー内のこの 2 つの構成間を切り替える際には、 を実行することをおすすめします。

pip3 install C:/tmp/tensorflow_pkg/tensorflow-version-cp36-cp36m-win_amd64.whl

Tested build configurations

CPU

Version Python version Compiler Build tools
tensorflow-2.3.0 3.5-3.8 MSVC 2019 Bazel 3.1.0
tensorflow-2.2.0 3.5-3.8 MSVC 2019 Bazel 2.0.0
tensorflow-2.1.0 3.5-3.7 MSVC 2019 Bazel 0.27.1-0.29.1
tensorflow-2.0.0 3.5-3.7 MSVC 2017 Bazel 0.26.1
tensorflow-1.15.0 3.5-3.7 MSVC 2017 Bazel 0.26.1
tensorflow-1.14.0 3.5-3.7 MSVC 2017 Bazel 0.24.1-0.25.2
tensorflow-1.13.0 3.5-3.7 MSVC 2015 update 3 Bazel 0.19.0-0.21.0
tensorflow-1.12.0 3.5-3.6 MSVC 2015 update 3 Bazel 0.15.0
tensorflow-1.11.0 3.5-3.6 MSVC 2015 update 3 Bazel 0.15.0
tensorflow-1.10.0 3.5-3.6 MSVC 2015 update 3 Cmake v3.6.3
tensorflow-1.9.0 3.5-3.6 MSVC 2015 update 3 Cmake v3.6.3
tensorflow-1.8.0 3.5-3.6 MSVC 2015 update 3 Cmake v3.6.3
tensorflow-1.7.0 3.5-3.6 MSVC 2015 update 3 Cmake v3.6.3
tensorflow-1.6.0 3.5-3.6 MSVC 2015 update 3 Cmake v3.6.3
tensorflow-1.5.0 3.5-3.6 MSVC 2015 update 3 Cmake v3.6.3
tensorflow-1.4.0 3.5-3.6 MSVC 2015 update 3 Cmake v3.6.3
tensorflow-1.3.0 3.5-3.6 MSVC 2015 update 3 Cmake v3.6.3
tensorflow-1.2.0 3.5-3.6 MSVC 2015 update 3 Cmake v3.6.3
tensorflow-1.1.0 3.5 MSVC 2015 update 3 Cmake v3.6.3
tensorflow-1.0.0 3.5 MSVC 2015 update 3 Cmake v3.6.3

GPU

Version Python version Compiler Build tools cuDNN CUDA
tensorflow_gpu-2.3.0 3.5-3.8 MSVC 2019 Bazel 3.1.0 7.4 10.1
tensorflow_gpu-2.2.0 3.5-3.8 MSVC 2019 Bazel 2.0.0 7.4 10.1
tensorflow_gpu-2.1.0 3.5-3.7 MSVC 2019 Bazel 0.27.1-0.29.1 7.4 10.1
tensorflow_gpu-2.0.0 3.5-3.7 MSVC 2017 Bazel 0.26.1 7.4 10
tensorflow_gpu-1.15.0 3.5-3.7 MSVC 2017 Bazel 0.26.1 7.4 10
tensorflow_gpu-1.14.0 3.5-3.7 MSVC 2017 Bazel 0.24.1-0.25.2 7.4 10
tensorflow_gpu-1.13.0 3.5-3.7 MSVC 2015 update 3 Bazel 0.19.0-0.21.0 7.4 10
tensorflow_gpu-1.12.0 3.5-3.6 MSVC 2015 update 3 Bazel 0.15.0 7 9
tensorflow_gpu-1.11.0 3.5-3.6 MSVC 2015 update 3 Bazel 0.15.0 7 9
tensorflow_gpu-1.10.0 3.5-3.6 MSVC 2015 update 3 Cmake v3.6.3 7 9
tensorflow_gpu-1.9.0 3.5-3.6 MSVC 2015 update 3 Cmake v3.6.3 7 9
tensorflow_gpu-1.8.0 3.5-3.6 MSVC 2015 update 3 Cmake v3.6.3 7 9
tensorflow_gpu-1.7.0 3.5-3.6 MSVC 2015 update 3 Cmake v3.6.3 7 9
tensorflow_gpu-1.6.0 3.5-3.6 MSVC 2015 update 3 Cmake v3.6.3 7 9
tensorflow_gpu-1.5.0 3.5-3.6 MSVC 2015 update 3 Cmake v3.6.3 7 9
tensorflow_gpu-1.4.0 3.5-3.6 MSVC 2015 update 3 Cmake v3.6.3 6 8
tensorflow_gpu-1.3.0 3.5-3.6 MSVC 2015 update 3 Cmake v3.6.3 6 8
tensorflow_gpu-1.2.0 3.5-3.6 MSVC 2015 update 3 Cmake v3.6.3 5.1 8
tensorflow_gpu-1.1.0 3.5 MSVC 2015 update 3 Cmake v3.6.3 5.1 8
tensorflow_gpu-1.0.0 3.5 MSVC 2015 update 3 Cmake v3.6.3 5.1 8

Install the Profiler and GPU prerequisites

Install the Profiler by downloading and running the

script from the GitHub repository.

To profile on the GPU, you must:

  1. or newer. CUDA Toolkit 10.1 supports only single GPU profiling. To profile
    multiple GPUs, see . Ensure
    that the CUDA driver version you install is at least 440.33 for Linux or
    441.22 for Windows.

  2. Ensure CUPTI exists on the path:

If you don’t have CUPTI on the path, prepend its installation directory to the
environment variable by running:

Run the command above again to verify that the CUPTI library is
found.

Profile multiple GPUs

TensorFlow currently supports multiple GPU profiling only for single host
systems. Multiple GPU profiling for multi-host systems is currently not
supported. Install CUDA Toolkit 10.2 or later to profile multiple GPUs. As
TensorFlow supports CUDA Toolkit versions only up to 10.1 , create symbolic
links to and .

To profile multi-worker GPU configurations, profile individual workers
independently.

Resolve privilege issues

When you run profiling with CUDA Toolkit 10.1 in a Docker environment or on
Linux, you may encounter issues related to insufficient CUPTI privileges
(). See the
NVIDIA Developer Docs
to learn more about how you can resolve these issues on Linux.

To resolve CUPTI privilege issues in a Docker environment, run

Docker Linux builds

TensorFlow’s Docker development images are an easy way to set up an environment
to build Linux packages from source. These images already contain the source
code and dependencies required to build TensorFlow. See the TensorFlow
Docker guide for installation and the
list of available image tags.

CPU-only

The following example uses the image to build a CPU-only package from the latest TensorFlow source code. See the
Docker guide for available TensorFlow tags.

Download the latest development image and start a Docker container that we’ll
use to build the pip package:

The above command starts a shell in the directory—the
root of the source tree. It mounts the host’s current directory in the container’s
directory, and passes the host user’s information to the container through
an environmental variable (used to set permissions—Docker can make this tricky).

Alternatively, to build a host copy of TensorFlow within a container, mount the
host source tree at the container’s directory:

docker run -it -w /tensorflow -v /path/to/tensorflow:/tensorflow -v $PWD:/mnt \
    -e HOST_PERMS="$(id -u):$(id -g)" tensorflow/tensorflow:devel bash

With the source tree set up, build the TensorFlow package within the container’s
virtual environment:

  1. Configure the build—this prompts the user to answer build configuration questions.
  2. Build the tool used to create the pip package.
  3. Run the tool to create the pip package.
  4. Adjust the ownership permissions of the file for outside the container.

Install and verify the package within the container:

On your host machine, the TensorFlow pip package is in the current directory
(with host user permissions):

GPU support

Docker is the easiest way to build GPU support for TensorFlow since the host
machine only requires the

(the NVIDIA CUDA Toolkit doesn’t have to be installed). See the
GPU support guide and the TensorFlow Docker guide
to set up nvidia-docker (Linux only).

The following example downloads the TensorFlow image
and uses to run the GPU-enabled container. This development image
is configured to build a pip package with GPU support:

Then, within the container’s virtual environment, build the TensorFlow package
with GPU support:

Install and verify the package within the container and check for a GPU:

GPU による高速化

TensorFlow の演算の多くは、GPU を計算に使用することで高速化されます。TensorFlow は演算に注釈をつけなくとも、自動的に GPU と CPU のどちらかを選択し、必要であればテンソルを GPU メモリと CPU メモリの間でコピーして実行します。演算で生成されたテンソルは通常演算を実行したデバイスのメモリに置かれます。例を見てみましょう。

利用できるGPUはあるか: 
True
テンソルはGPU #0にあるか:  
True

デバイス名

プロパティにより、そのテンソルの内容を保持しているデバイスの完全な名前文字列を得ることができます。この名前には、プログラムを実行中のホストのネットワークアドレスや、ホスト上のデバイスについての詳細がエンコードされています。この情報は、TensorFlow プログラムの分散実行に必要なものです。テンソルがホスト上の 番目のGPUにある場合、文字列の最後は となります。

明示的デバイス配置

TensorFlowでいう配置は、個々の演算を実行するためにどのようにデバイスにアサイン(配置)されるかを指します。前述のとおり、明示的な示唆がなければ、TensorFlow は演算を実行するデバイスを自動的に決め、必要であればテンソルをそのデバイスにコピーします。しかし、 コンテキストマネジャーを使うことで、TensorFlow の演算を特定のデバイスに配置することができます。例を見てみましょう。

On CPU:
10 loops: 108.40ms
On GPU:
10 loops: 314.93ms

Режим обучения eager training

Вычисление градиентов

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

Вы можете использовать для обучения и/или вычисления градиентов в eager. Это особенно полезно для сложных тренировочных циклов.

Поскольку во время каждого вызова могут выполняться разные операции, все
операции прямого прохода записываются на «ленту». Чтобы вычислить градиент, проиграйте
ленту назад, а затем сбросьте. A Конкретный может вычислить
только один градиент; последующие вызовы выдадут runtime error.

tf.Tensor(], shape=(1, 1), dtype=float32)

Обучение модели

В следующем примере создается многослойная модель, которая классифицирует стандартные
рукописные цифры MNIST. В примере демонстрируется оптимизатор и API слоев для построения
обучаемых графов в среде eager execution.

Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz
11493376/11490434  - 0s 0us/step

Даже без обучения вызовем модель и проверим выходные данные в eager execution:

Logits:  ]

Хотя у моделей keras есть встроенный цикл обучения (использование метода ), иногда вам нужна большая кастомизация. Вот пример цикла обучения реализованного с eager:

Замечание: Используйте функцию assert в чтобы проверить выполнение условия. Это работает в eager и graph execution.

Epoch 0 finished
Epoch 1 finished
Epoch 2 finished

Text(0, 0.5, 'Loss ')

Переменные и оптимизаторы

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

Наборы переменных могут быть инкапсулированы в слои или модели вместе с методами которые работают на них. См. Кастомные слои и модели Keras для подробностей. Основная разница между слоями и моделями это то, что модели добавляют методы такие, как , и .

Например приведенный выше пример автоматического дифференцирования может быть
переписан так:

Далее:

  1. Создание модели.
  2. Производные функции потерь относительно параметров модели.
  3. Стратегия обновления переменных, основанная на производных.
Initial loss: 68.803
Loss at step 000: 66.113
Loss at step 020: 29.973
Loss at step 040: 13.887
Loss at step 060: 6.727
Loss at step 080: 3.540
Loss at step 100: 2.121
Loss at step 120: 1.489
Loss at step 140: 1.208
Loss at step 160: 1.083
Loss at step 180: 1.027
Loss at step 200: 1.002
Loss at step 220: 0.991
Loss at step 240: 0.987
Loss at step 260: 0.984
Loss at step 280: 0.983

Final loss: 0.983

W = 3.0419273376464844, B = 2.0271525382995605

Примечание: Переменные хранятся до тех пор, пока не будет удалена последняя ссылка
на объект python, с которой удалится и переменная.

Объектно-ориентированное сохранение

включает в себя удобный метод позволяющий вам легко создавать чекпоинт:

Используя вы можете получить полный контроль над процессом.

Этот раздел является сокращенной версией руководства чекпоинтов обучения.

'./ckpt/-1'
<tf.Variable 'Variable:0' shape=() dtype=float32, numpy=2.0>

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

<tensorflow.python.training.tracking.util.CheckpointLoadStatus at 0x7f6948585860>

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

Oбъектно-ориентированные метрики

хранятся как объекты. Обновите метрику передав новые данные в
вызываемый объект, и получите результат, используя метод ,
например:

<tf.Tensor: shape=(), dtype=float32, numpy=5.5>

Сводки и TensorBoard

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

Вы можете использовать чтобы писать сводку переменной в eager execution.
Например, чтобы записать сводные данные каждые 100 шагов обучения:

events.out.tfevents.1596241063.kokoro-gcp-ubuntu-prod-1362344790.17812.619697.v2

Setup for Windows

Install the following build tools to configure your Windows development
environment.

Install Python and the TensorFlow package dependencies

Install a
Python 3.5.x or Python 3.6.x 64-bit release for Windows.
Select pip as an optional feature and add it to your environmental variable.

Install the TensorFlow pip package dependencies:

The dependencies are listed in the

file under .

Install Bazel

, the build tool used to compile
TensorFlow. For Bazel version, see the
for Windows.
Configure Bazel to
.

Add the location of the Bazel executable to your environment variable.

Install MSYS2

Install MSYS2 for the bin tools needed to
build TensorFlow. If MSYS2 is installed to , add
to your environment variable. Then, using ,
run:

pacman -S git patch unzip

Install Visual C++ Build Tools 2019

Install the Visual C++ build tools 2019. This comes with Visual Studio 2019
but can be installed separately:

  1. Go to the
    Visual Studio downloads,
  2. Select Redistributables and Build Tools,
  3. Download and install:
    • Microsoft Visual C++ 2019 Redistributable
    • Microsoft Build Tools 2019

Download the TensorFlow source code

Use Git to clone the
TensorFlow repository
( is installed with MSYS2):

The repo defaults to the development branch. You can also checkout a
release branch
to build:

git checkout branch_name  # r1.9, r1.10, etc.

Build the pip package

TensorFlow 2.x

tensorflow:master repo has been updated to build 2.x by default.
Install Bazel and use
to create the TensorFlow package.

bazel build //tensorflow/tools/pip_package:build_pip_package

TensorFlow 1.x

To build the 1.x version of TensorFlow from master, use
to create a TensorFlow 1.x package.

bazel build --config=v1 //tensorflow/tools/pip_package:build_pip_package

CPU-only

Use to make the TensorFlow package builder with CPU-only support:

bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package

GPU support

To make the TensorFlow package builder with GPU support:

bazel build --config=opt --config=cuda --define=no_tensorflow_py_deps=true //tensorflow/tools/pip_package:build_pip_package

Bazel build options

Use this option when building to avoid issue with package creation:
tensorflow:issue#22390

--define=no_tensorflow_py_deps=true

See the Bazel command-line reference
for
.

Building TensorFlow from source can use a lot of RAM. If your system is
memory-constrained, limit Bazel’s RAM usage with: .

If building with GPU support, add
to suppress nvcc warning messages.

Build the package

The command creates an executable named —this
is the program that builds the package. For example, the following builds a
package in the directory:

bazel-bin\tensorflow\tools\pip_package\build_pip_package C:/tmp/tensorflow_pkg

Although it is possible to build both CUDA and non-CUDA configs under the
same source tree, we recommend running when switching between
these two configurations in the same source tree.

Install the package

The filename of the generated file depends on the TensorFlow version and
your platform. Use to install the package, for example:

pip3 install C:/tmp/tensorflow_pkg/tensorflow-version-cp36-cp36m-win_amd64.whl

Построение сложных моделей

The Functional API

Модель это простой стек слоев с помощью которого
нельзя представить произвольную модель. Используйте
Keras functional API
для построения сложных топологий моделей, таких как:

  • Модели с несколькими входами,
  • Модели с несколькими выходами,
  • Модели с общими слоями (один и тот же слой вызывается несколько раз),
  • Модели с непоследовательными потоками данных (напр. остаточные связи).

Построение модели с functional API работает следующим образом:

  1. Экземпляр слоя является вызываемым и возвращает тензор.
  2. Входные и выходные тензоры используются для определения экземпляра

  3. Эта модель обучается точно так же как и модель.

Следующий пример использует functional API для построения простой, полносвязной
сети:

Создайте экземпляр модели с данными входами и выходами.

Epoch 1/5
32/32  - 0s 2ms/step - loss: 13.4113 - accuracy: 0.0920
Epoch 2/5
32/32  - 0s 3ms/step - loss: 25.1610 - accuracy: 0.0950
Epoch 3/5
32/32  - 0s 2ms/step - loss: 47.3648 - accuracy: 0.1010
Epoch 4/5
32/32  - 0s 2ms/step - loss: 75.6122 - accuracy: 0.0970
Epoch 5/5
32/32  - 0s 2ms/step - loss: 110.2536 - accuracy: 0.1020

<tensorflow.python.keras.callbacks.History at 0x7f334c232cf8>

Сабклассинг моделей

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

Сабклассинг модели особенно полезен когда включен
eager execution, поскольку он позволяет написать
прямое распространение императивно.

Примечание: если вам нужно чтобы ваша модель всегда выполнялась императивно, вы можете установить когда вызываете конструктор .

Следующий пример показывает сабклассированную использующую пользовательское прямое
распространение, которое не обязательно выполнять императивно:

Создайте экземпляр класса новой модели:

Epoch 1/5
32/32  - 0s 2ms/step - loss: 11.5958 - accuracy: 0.0960
Epoch 2/5
32/32  - 0s 2ms/step - loss: 11.5665 - accuracy: 0.1070
Epoch 3/5
32/32  - 0s 2ms/step - loss: 11.5604 - accuracy: 0.1080
Epoch 4/5
32/32  - 0s 2ms/step - loss: 11.5558 - accuracy: 0.1070
Epoch 5/5
32/32  - 0s 2ms/step - loss: 11.5529 - accuracy: 0.1040

<tensorflow.python.keras.callbacks.History at 0x7f334c0fa7f0>

Пользовательские слои

Создайте пользовательский слой сабклассингом и реализацией
следующих методов:

  • : Опционально определите подслои которые будут использоваться в этом слое.
  • : Создайте веса слоя. Добавьте веса при помощи метода
    .
  • : Определите прямое распространение.
  • Опционально, слой может быть сериализован реализацией метода
    и метода класса .

Ниже пример пользовательского слоя который осуществляет умножение матрицы () поданной на вход
с матрицей ядра:

Создайте модель с использованием вашего пользовательского слоя:

Epoch 1/5
32/32  - 0s 2ms/step - loss: 11.5635 - accuracy: 0.1050
Epoch 2/5
32/32  - 0s 2ms/step - loss: 11.5632 - accuracy: 0.1080
Epoch 3/5
32/32  - 0s 2ms/step - loss: 11.5628 - accuracy: 0.1050
Epoch 4/5
32/32  - 0s 2ms/step - loss: 11.5632 - accuracy: 0.1110
Epoch 5/5
32/32  - 0s 2ms/step - loss: 11.5633 - accuracy: 0.1050

<tensorflow.python.keras.callbacks.History at 0x7f3340344780>

Узнайте больше о создании новых слоев и моделей с нуля с помощью сабклассинга в Руководстве написания слоев и моделей с нуля.

Build using the MSYS shell

TensorFlow can also be built using the MSYS shell. Make the changes listed
below, then follow the previous instructions for the Windows native command line
().

Disable MSYS path conversion

MSYS automatically converts arguments that look like Unix paths to Windows
paths, and this doesn’t work with . (The label is
considered a Unix absolute path since it starts with a slash.)

Set your PATH

Add the Bazel and Python installation directories to your environmental
variable. If Bazel is installed to , and Python to
, set your with:

# Use Unix-style with ':' as separator


For GPU support, add the CUDA and cuDNN bin directories to your :

Hardware requirements

The following GPU-enabled devices are supported:

  • NVIDIA GPU card with CUDA architectures 3.5, 3.7, 5.2, 6.0, 6.1, 7.0 and
    higher than 7.0. See the list of
    CUDA-enabled
    GPU cards.
  • On systems with NVIDIA Ampere GPUs (CUDA architecture 8.0) or newer,
    kernels are JIT-compiled from PTX and TensorFlow can take over 30 minutes to
    start up. This overhead can be limited to the first start up by increasing
    the default JIT cache size with: »
    (see
    JIT
    Caching for details).
  • For GPUs with unsupported CUDA architectures, or to avoid JIT compilation
    from PTX, or to use different versions of the NVIDIA libraries, see the
    Linux build from source guide.
  • Packages do not contain PTX code except for the latest supported CUDA
    architecture; therefore, TensorFlow fails to load on older GPUs when
    is set. (See
    for details.)

Setup for Windows

Install the following build tools to configure your Windows development
environment.

Install Python and the TensorFlow package dependencies

Install a
Python 3.5.x or Python 3.6.x 64-bit release for Windows.
Select pip as an optional feature and add it to your environmental variable.

Install the TensorFlow pip package dependencies:

The dependencies are listed in the

file under .

Install Bazel

, the build tool used to compile
TensorFlow. For Bazel version, see the
for Windows.
Configure Bazel to
.

Add the location of the Bazel executable to your environment variable.

Install MSYS2

Install MSYS2 for the bin tools needed to
build TensorFlow. If MSYS2 is installed to , add
to your environment variable. Then, using ,
run:

pacman -S git patch unzip

Install Visual C++ Build Tools 2019

Install the Visual C++ build tools 2019. This comes with Visual Studio 2019
but can be installed separately:

  1. Go to the
    Visual Studio downloads,
  2. Select Redistributables and Build Tools,
  3. Download and install:
    • Microsoft Visual C++ 2019 Redistributable
    • Microsoft Build Tools 2019

Download the TensorFlow source code

Use Git to clone the
TensorFlow repository
( is installed with MSYS2):

The repo defaults to the development branch. You can also checkout a
release branch
to build:

git checkout branch_name  # r1.9, r1.10, etc.

Загружаем датасет Fashion MNIST

Это руководство использует датасет Fashion MNIST который содержит 70,000 монохромных изображений в 10 категориях. На каждом изображении содержится по одному предмету одежды в низком разрешении (28 на 28 пикселей):

Figure 1. Образцы Fashion-MNIST (Zalando, лицензия MIT). 

Fashion MNIST предназначен для замены классического датасета MNIST который часто используют как «Hello, World» программ машинного обучения для компьютерного зрения. Датасет MNIST содержит изображения рукописных цифр (0, 1, 2, и т.д.) в формате идентичном формату изображений одежды которыми мы будем пользоваться здесь.

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

Мы используем 60,000 изображений для обучения нейросети и 10,000 изображений чтобы проверить, насколько правильно сеть обучилась их классифицировать. Вы можете получить доступ к Fashion MNIST прямо из TensorFlow. Импортируйте и загрузите данные Fashion MNIST прямо из TensorFlow:

Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-labels-idx1-ubyte.gz
32768/29515  - 0s 0us/step
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-images-idx3-ubyte.gz
26427392/26421880  - 0s 0us/step
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-labels-idx1-ubyte.gz
8192/5148  - 0s 0us/step
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-images-idx3-ubyte.gz
4423680/4422102  - 0s 0us/step

Загрузка датасета возвращает четыре массива NumPy:

  • Массивы и являются тренировочным сетом — данными, на которых модель будет обучаться.
  • Модель тестируется на проверочном сете, а именно массивах и .

Изображения являются 28х28 массивами NumPy, где значение пикселей варьируется от 0 до 255. Метки (labels) — это массив целых чисел от 0 до 9. Они соответствуют классам одежды изображенной на картинках:

Label Class
T-shirt/top
1 Trouser
2 Pullover
3 Dress
4 Coat
5 Sandal
6 Shirt
7 Sneaker
8 Bag
9 Ankle boot

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

Configure the build

Configure your system build by running the at the root of your
TensorFlow source tree. This script prompts you for the location of TensorFlow
dependencies and asks for additional build configuration options (compiler
flags, for example).

./configure

GPU support

For GPU support, set during configuration and specify the
versions of CUDA and cuDNN. If your system has multiple versions of CUDA or
cuDNN installed, explicitly set the version instead of relying on the default.
creates symbolic links to your system’s CUDA libraries—so if you
update your CUDA library paths, this configuration step must be run again before
building.

Optimizations

For compilation optimization flags, the default () optimizes the
generated code for your machine’s CPU type. However, if building TensorFlow for a
different CPU type, consider a more specific optimization flag. See the
GCC manual
for examples.

Preconfigured configurations

There are some preconfigured build configs available that can be added to the
command, for example:

  • —Support for the Intel MKL-DNN.
  • —Configuration for a mostly static, monolithic build.
  • —Build TensorFlow 1.x instead of 2.x.

Windows でのセットアップ

Windows での開発環境を構成するために、以下のビルドツールをインストールします。

Python と TensorFlow パッケージの依存関係をインストールする

Windows 用の Python 3.5.x または Python 3.6.x の 64 ビット版をインストールします。
オプション機能として pip を選択し、 環境変数に追加します。

TensorFlow の pip パッケージの依存関係をインストールします。

依存関係のリストは、 内の ファイルにあります。

Bazel をインストールする

TensorFlow のコンパイルに使用するビルドツールである します。Bazel のバージョンについては、Windows 用のをご覧ください。
Bazel で するように構成します。

Bazel 実行可能ファイルの場所を 環境変数に追加します。

MSYS2 をインストールする

TensorFlow のビルドに必要な bin ツール用に MSYS2 をインストールします。MSYS2 が にインストールされている場合は、 を 環境変数に追加します。次に、 を使用して、以下のコマンドを実行します。

pacman -S git patch unzip

Visual C++ Build Tools 2019 をインストールする

Visual C++ Build Tools 2019 をインストールします。これは Visual Studio 2019 に付属していますが、別々にインストールすることもできます。

  1. Visual Studio のダウンロード サイトに移動します。
  2. を選択します。
  3. 以下をダウンロードしてインストールします。
    • Microsoft Visual C++ 2019 再頒布可能ファイル
    • Microsoft Build Tools 2019

TensorFlow のソースコードをダウンロードする

Git を使用して TensorFlow リポジトリのクローンを作成します( は MSYS2 でインストールされます)。

リポジトリのデフォルトは 開発ブランチです。リリース ブランチをチェックアウトしてビルドすることもできます。

git checkout branch_name  # r1.9, r1.10, etc.

Package location

A few installation mechanisms require the URL of the TensorFlow Python package.
The value you specify depends on your Python version.

Version URL
Linux
Python 3.5 GPU support https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-2.3.0-cp35-cp35m-manylinux2010_x86_64.whl
Python 3.5 CPU-only https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow_cpu-2.3.0-cp35-cp35m-manylinux2010_x86_64.whl
Python 3.6 GPU support https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-2.3.0-cp36-cp36m-manylinux2010_x86_64.whl
Python 3.6 CPU-only https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow_cpu-2.3.0-cp36-cp36m-manylinux2010_x86_64.whl
Python 3.7 GPU support https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-2.3.0-cp37-cp37m-manylinux2010_x86_64.whl
Python 3.7 CPU-only https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow_cpu-2.3.0-cp37-cp37m-manylinux2010_x86_64.whl
Python 3.8 GPU support https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-2.3.0-cp38-cp38-manylinux2010_x86_64.whl
Python 3.8 CPU-only https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow_cpu-2.3.0-cp38-cp38-manylinux2010_x86_64.whl
macOS (CPU-only)
Python 3.5 https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-2.3.0-cp35-cp35m-macosx_10_6_intel.whl
Python 3.6 https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-2.3.0-cp36-cp36m-macosx_10_9_x86_64.whl
Python 3.7 https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-2.3.0-cp37-cp37m-macosx_10_9_x86_64.whl
Python 3.8 https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-2.3.0-cp38-cp38-macosx_10_14_x86_64.whl
Windows
Python 3.5 GPU support https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-2.3.0-cp35-cp35m-win_amd64.whl
Python 3.5 CPU-only https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow_cpu-2.3.0-cp35-cp35m-win_amd64.whl
Python 3.6 GPU support https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-2.3.0-cp36-cp36m-win_amd64.whl
Python 3.6 CPU-only https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow_cpu-2.3.0-cp36-cp36m-win_amd64.whl
Python 3.7 GPU support https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-2.3.0-cp37-cp37m-win_amd64.whl
Python 3.7 CPU-only https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow_cpu-2.3.0-cp37-cp37m-win_amd64.whl
Python 3.8 GPU support https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-2.3.0-cp38-cp38-win_amd64.whl
Python 3.8 CPU-only https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow_cpu-2.3.0-cp38-cp38-win_amd64.whl
Raspberry PI (CPU-only)
Python 3, Pi0 or Pi1 https://storage.googleapis.com/tensorflow/raspberrypi/tensorflow-2.3.0-cp35-none-linux_armv6l.whl
Python 3, Pi2 or Pi3 https://storage.googleapis.com/tensorflow/raspberrypi/tensorflow-2.3.0-cp35-none-linux_armv7l.whl
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *