序章

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

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

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

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

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

  • PythonとVirtualenv:このアプローチでは、TensorFlowと、Python仮想環境でTensorFlowを使用するために必要なすべてのパッケージをインストールします。 これにより、TensorFlow環境が同じマシン上の他のPythonプログラムから分離されます。
  • Native pip :この方法では、TensorFlowをシステムにグローバルにインストールします。 これは、マルチユーザーシステムのすべてのユーザーがTensorFlowを利用できるようにする場合に推奨されます。 このインストール方法は、封じ込められた環境でTensorFlowを分離せず、他のPythonインストールまたはライブラリに干渉する可能性があります。
  • Docker :Dockerはコンテナーランタイム環境であり、そのコンテンツをシステム上の既存のパッケージから完全に分離します。 この方法では、TensorFlowとそのすべての依存関係を含むDockerコンテナを使用します。 この方法は、すでにDockerを使用している大規模なアプリケーションアーキテクチャにTensorFlowを組み込むのに理想的です。 ただし、Dockerイメージのサイズはかなり大きくなります。

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

前提条件

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

  • Ubuntu 16.04初期サーバーセットアップガイドに従ってセットアップされた、少なくとも1GBのRAMを備えた1つのUbuntu 16.04サーバー(sudo非rootユーザーとファイアウォールを含む)。 このチュートリアルの最後の例を正常に実行するには、少なくとも1GBのRAMが必要です。

  • Python3.3以降およびvirtualenvがインストールされている。 Ubuntu 16.04にPython3をインストールする方法に従って、Pythonとvirtualenvを構成します。

  • Gitがインストールされています。これは、 Ubuntu16.04にGitをインストールする方法に従って実行できます。 これを使用して、例のリポジトリをダウンロードします。

ステップ1—TensorFlowをインストールする

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

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

  1. mkdir ~/tf-demo

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

  1. cd ~/tf-demo

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

  1. python3 -m venv tensorflow-dev

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

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

  1. source tensorflow-dev/bin/activate

有効にすると、ターミナルに次のようなものが表示されます。

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

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

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

  1. pip3 install --upgrade tensorflow

TensorFlowは次のものをインストールします:

Output
Collecting 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

仮想環境をいつでも非アクティブ化する場合、コマンドは次のとおりです。

  1. deactivate

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

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

ステップ2—インストールの検証

TensorFlowのインストールを検証するために、root以外のユーザーとしてTensorFlowで簡単なプログラムを実行します。 正規の初心者向けの「Hello、world!」の例を使用します。 検証の一形態として。 Pythonファイルを作成するのではなく、Pythonのインタラクティブコンソールを使用してこのプログラムを作成します。

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

  1. python

ターミナルに次のプロンプトが表示されます

>>>

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

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

  1. import tensorflow as tf

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

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

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

  1. sess = tf.Session()

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

Output
2017-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でパフォーマンスを向上させるために最適化される可能性のある命令セットがあることを示しています。 これが表示された場合は、無視して続行できます。

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

  1. print(sess.run(hello))

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

Output
Hello, world!

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

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

それでは、TensorFlowの画像認識APIを使用して、TensorFlowについて詳しく見ていきましょう。

ステップ3—画像認識にTensorFlowを使用する

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

画像を分類するには、モデルをトレーニングする必要があります。 次に、モデルを使用するためのコードを作成する必要があります。 これらの概念の詳細については、機械学習の概要をご覧ください。

TensorFlowは、モデルと例のリポジトリを提供します。これには、画像を分類するためのコードとトレーニング済みモデルが含まれます。

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

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

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

Output
Cloning 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ディレクトリに切り替えます。

  1. cd models/tutorials/image/imagenet

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

この例では、パンダの事前提供画像を分類します。 次のコマンドを実行して、画像分類プログラムを実行します。

  1. python classify_image.py

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

Output
giant 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の画像認識機能を使用して、最初の画像を分類しました。

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

結論

Python仮想環境にTensorFlowをインストールし、いくつかの例を実行してTensorFlowが機能することを検証しました。 これで、畳み込みニューラルネットワーク単語の埋め込みなどの追加トピックを探索できるツールが手に入りました。

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