Ubuntu 16.04でTensorFlowをインストールして使用する方法

前書き

TensorFlowは、ニューラルネットワークをトレーニングするためにGoogleが構築したオープンソースの機械学習ソフトウェアです。 TensorFlowのニューラルネットワークはstateful dataflow graphsの形式で表されます。 グラフの各ノードは、多次元配列でニューラルネットワークによって実行される操作を表します。 これらの多次元配列は一般に「テンソル」として知られているため、TensorFlowと呼ばれています。

TensorFlowはdeep learningソフトウェアシステムです。 TensorFlowは、機械学習人工知能システムRankBrainで検索ランキングを行う方法でグーグルが示しているように、情報検索に適しています。 TensorFlowは、GoogleのInceptionに示されているように、画像認識と人間の言語による音声認識を実行できます。 また、partial differential equationsなど、機械学習に固有ではない他の問題を解決するのにも役立ちます。

TensorFlowアーキテクチャにより、デスクトップ、サーバー、またはモバイルデバイス内の複数のCPUまたはGPUに展開できます。 Nvidiaの並列コンピューティングプラットフォームであるCUDAと統合するための拡張機能もあります。 これにより、GPUに展開しているユーザーは、仮想計算セットや、並列計算タスクに必要なGPUの他の要素に直接アクセスできます。

このチュートリアルでは、TensorFlowの「CPUサポートのみ」バージョンをインストールします。 このインストールは、TensorFlowをインストールして使用したいが、Nvidiaグラフィックカードを持っていないか、パフォーマンスが重要なアプリケーションを実行する必要がない人に最適です。

TensorFlowはいくつかの方法でインストールできます。 各メソッドには、異なるユースケースと開発環境があります。

  • Python and Virtualenv:このアプローチでは、Python仮想環境でTensorFlowとTensorFlowを使用するために必要なすべてのパッケージをインストールします。 これにより、TensorFlow環境が同じマシン上の他のPythonプログラムから分離されます。

  • Native pip:このメソッドでは、TensorFlowをシステムにグローバルにインストールします。 これは、マルチユーザーシステム上のすべての人がTensorFlowを利用できるようにする場合に推奨されます。 このインストール方法は、含まれる環境でTensorFlowを分離せず、他のPythonインストールまたはライブラリに干渉する可能性があります。

  • Docker:Dockerはコンテナランタイム環境であり、そのコンテンツをシステム上の既存のパッケージから完全に分離します。 このメソッドでは、TensorFlowとそのすべての依存関係を含むDockerコンテナーを使用します。 この方法は、Dockerを既に使用しているより大きなアプリケーションアーキテクチャにTensorFlowを組み込むのに理想的です。 ただし、Dockerイメージのサイズは非常に大きくなります。

このチュートリアルでは、virtualenvを使用してPython仮想環境にTensorFlowをインストールします。 このアプローチは、TensorFlowインストールを分離し、迅速に起動して実行します。 インストールが完了したら、短いTensorFlowプログラムを実行してインストールを検証し、TensorFlowを使用して画像認識を実行します。

前提条件

このチュートリアルを始める前に、次のものが必要です。

  • sudo非rootユーザーとファイアウォールを含むthe Ubuntu 16.04 initial server setup guideをフォローすることにより、少なくとも1GBのRAMがセットアップされた1つのUbuntu16.04サーバー。 このチュートリアルの最後の例を正常に実行するには、少なくとも1GBのRAMが必要です。

  • Python 3.3以降およびvirtualenvがインストールされています。 How to Install Python 3 on Ubuntu 16.04に従って、Pythonとvirtualenvを構成します。

  • Gitがインストールされています。これはHow To Install Git on Ubuntu 16.04に従って実行できます。 これを使用して、サンプルのリポジトリをダウンロードします。

[[step-1 -—- installing-tensorflow]] ==ステップ1—TensorFlowのインストール

このステップでは、仮想環境を作成し、TensorFlowをインストールします。

まず、tf-demoというプロジェクトディレクトリを作成します。

mkdir ~/tf-demo

新しく作成したtf-demoディレクトリに移動します。

cd ~/tf-demo

次に、tensorflow-devという新しい仮想環境を作成します。 次のコマンドを実行して環境を作成します。

python3 -m venv tensorflow-dev

これにより、新しいtensorflow-devディレクトリが作成されます。このディレクトリには、この環境がアクティブ化されている間にインストールしたすべてのパッケージが含まれます。 また、pipとスタンドアロンバージョンのPythonも含まれています。

次に、仮想環境をアクティブにします。

source tensorflow-dev/bin/activate

アクティベートされると、ターミナルに次のようなものが表示されます。

(tensorflow-dev)username@hostname:~/tf-demo $

これで、仮想環境にTensorFlowをインストールできます。

次のコマンドを実行して、PyPiで利用可能な最新バージョンのTensorFlowをインストールしてアップグレードします。

pip3 install --upgrade tensorflow

TensorFlowは以下をインストールします。

OutputCollecting tensorflow
  Downloading tensorflow-1.4.0-cp36-cp36m-macosx_10_11_x86_64.whl (39.3MB)
    100% |████████████████████████████████| 39.3MB 35kB/s

...

Successfully installed bleach-1.5.0 enum34-1.1.6 html5lib-0.9999999 markdown-2.6.9 numpy-1.13.3 protobuf-3.5.0.post1 setuptools-38.2.3 six-1.11.0 tensorflow-1.4.0 tensorflow-tensorboard-0.4.0rc3 werkzeug-0.12.2 wheel-0.30.0

[。注意]##

仮想環境をいつでも無効にする場合のコマンドは次のとおりです。

deactivate

後で環境を再アクティブ化するには、プロジェクトディレクトリに移動し、source tensorflow-dev/bin/activate
を実行します。

TensorFlowをインストールしたら、TensorFlowのインストールが機能することを確認しましょう。

[[step-2 -—- validating-installation]] ==ステップ2—インストールの検証

TensorFlowのインストールを検証するために、非ルートユーザーとしてTensorFlowで簡単なプログラムを実行します。 検証の形式として、「Hello、world!」の標準的な初心者の例を使用します。 Pythonファイルを作成するのではなく、Python’s interactive consoleを使用してこのプログラムを作成します。

プログラムを作成するには、Pythonインタープリターを起動します。

python

次のプロンプトが端末に表示されます

>>>

これはPythonインタープリターのプロンプトであり、Pythonステートメントの入力を開始する準備ができていることを示しています。

まず、この行を入力してTensorFlowパッケージをインポートし、ローカル変数tfとして使用できるようにします。 コード行を入力した後、ENTERを押します。

import tensorflow as tf

次に、次のコード行を追加して、メッセージ「Hello、world!」を設定します。

hello = tf.constant("Hello, world!")

次に、新しいTensorFlowセッションを作成し、それを変数sessに割り当てます。

sess = tf.Session()

[。注意]##

Note:環境によっては、次の出力が表示される場合があります。

Output2017-06-18 16:22:45.956946: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-18 16:22:45.957158: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-18 16:22:45.957282: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
2017-06-18 16:22:45.957404: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-18 16:22:45.957527: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use FMA instructions, but these are available on your machine and could speed up CPU computations.

これは、TensorFlowでパフォーマンスを向上させるために最適化される可能性のあるinstruction setがあることを示しています。 これが表示された場合は、無視して続行できます。

最後に、次のコード行を入力して、前のコード行で作成したhelloTensorFlowセッションを実行した結果を出力します。

print(sess.run(hello))

コンソールに次の出力が表示されます。

OutputHello, world!

これは、すべてが機能していること、およびTensorFlowを使用してより興味深いことを実行できることを示しています。

CTRL+Dを押して、Pythonインタラクティブコンソールを終了します。

次に、TensorFlowの画像認識APIを使用して、TensorFlowをさらに理解しましょう。

[[step-3 -—- using-tensorflow-for-image-recognition]] ==ステップ3—画像認識にTensorFlowを使用する

TensorFlowがインストールされ、簡単なプログラムを実行して検証したので、TensorFlowの画像認識機能を見てみましょう。

画像を分類するには、モデルをトレーニングする必要があります。 次に、モデルを使用するためのコードを記述する必要があります。 これらの概念の詳細については、An Introduction to Machine Learningを参照してください。

TensorFlowは、画像を分類するためのコードとトレーニング済みモデルを含むrepository of models and examplesを提供します。

Gitを使用して、TensorFlowモデルリポジトリをGitHubからプロジェクトディレクトリにクローンします。

git clone https://github.com/tensorflow/models.git

Gitがリポジトリをmodelsという新しいフォルダにチェックアウトすると、次の出力が表示されます。

OutputCloning into 'models'...
remote: Counting objects: 8785, done.
remote: Total 8785 (delta 0), reused 0 (delta 0), pack-reused 8785
Receiving objects: 100% (8785/8785), 203.16 MiB | 24.16 MiB/s, done.
Resolving deltas: 100% (4942/4942), done.
Checking connectivity... done.

models/tutorials/image/imagenetディレクトリに切り替えます。

cd models/tutorials/image/imagenet

このディレクトリには、TensorFlowを使用して画像を認識するclassify_image.pyファイルが含まれています。 このプログラムは、最初の実行時にtensorflow.orgからトレーニング済みモデルをダウンロードします。 このモデルをダウンロードするには、ディスク上に200MBの空き容量が必要です。

この例では、pre-supplied image of a Pandaを分類します。 このコマンドを実行して、画像分類プログラムを実行します。

python classify_image.py

次のような出力が表示されます。

Outputgiant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca (score = 0.89107)
indri, indris, Indri indri, Indri brevicaudatus (score = 0.00779)
lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens (score = 0.00296)
custard apple (score = 0.00147)
earthstar (score = 0.00117)

TensorFlowの画像認識機能を使用して最初の画像を分類しました。

別の画像を使用する場合は、python3 classify_image.pyコマンドに-- image_file引数を追加することでこれを行うことができます。 引数には、画像ファイルの絶対パスを渡します。

結論

TensorFlowをPython仮想環境にインストールし、いくつかの例を実行してTensorFlowが動作することを検証しました。 これで、Convolutional Neural NetworksWord Embeddingsなどの追加トピックを探索できるツールが手に入りました。

TensorFlowのprogrammer’s guideは、TensorFlow開発のための優れたリソースおよびリファレンスです。 また、Kaggleを探索することもできます。これは、他の機械学習、データサイエンス、統計の愛好家と対戦する機械学習の概念を実用化するための競争力のある環境です。 それらには、ソリューションを表示および共有できる優れたwikiがあり、その一部は統計および機械学習技術の最先端にあります。

Related