山内セミナーⅠ(2020/07/22)

関連サイトと資料

1.Getting Started with PyTorch for Deep Learning

近年のディープラーニングにより、コンピュータビジョンは大きく進歩しています。 これにより、画像認識、オブジェクト検出、画像セグメンテーション、画像生成などのさまざまなタスクのパフォーマンスが向上しました。 ディープラーニングフレームワークとライブラリは、このプロセスで主要な役割を果たしてきました。 ディープラーニングライブラリとしてのPyTorchは2016年に登場し、その柔軟性と使いやすさにより、 ディープラーニングの実践者の間で大きな注目を集めています。

実践者が深層学習アルゴリズムを構築するために使用するフレームワークがいくつかあります。 この本では、最新バージョンのPyTorch 1.0を使用して、さまざまなディープラーニングモデルを開発およびトレーニングします。 PyTorchは、Facebookの人工知能研究グループによって開発されたディープラーニングフレームワークです。 柔軟性と使いやすさを同時に提供します。 他のディープラーニングフレームワークに精通している場合は、 PyTorchが非常に楽しいことがわかります。

この章では、PyTorch 1.0を使用したディープラーニングの概念とその実装について確認します。 次のレシピについて説明します。

ディープラーニングアルゴリズムの開発は、トレーニングと展開の2つのステップで構成されます。 トレーニングステップでは、トレーニングデータを使用してモデルまたはネットワークをトレーニングします。 導入ステップでは、トレーニング済みモデルを導入して、新しい入力のターゲット値を予測します。

ディープラーニングアルゴリズムをトレーニングするには、次の要素が必要です。

次の図で、これらの要素間の相互作用を確認できます。

深層学習アルゴリズムのトレーニングプロセスは、反復的なプロセスです。 各反復で、トレーニングデータのバッチを選択します。 次に、データをモデルにフィードしてモデル出力を取得します。 その後、損失値を計算します。 次に、モデルパラメーター(重みとも呼ばれます)に関する損失関数の勾配を計算します。 最後に、オプティマイザは勾配に基づいてパラメータを更新します。 このループは続きます。 また、検証データセットを使用して、トレーニング中のモデルのパフォーマンスを追跡します。 パフォーマンスが頭打ちになると、トレーニングプロセスを停止します。

Technical requirements

ディープラーニングとコンピュータビジョンの概念に精通していることを前提としています。 さらに、Pythonプログラミングのスキルは中程度であることが求められます。

深層学習アルゴリズムは計算量が多いです。 適切な時間でディープラーニングアルゴリズムを構築するには、適切なGPUハードウェアを備えたコンピューターが必要です。 トレーニング時間は、モデルとデータサイズによって異なります。 コンピューターにNVIDIA GPUを装備するか、AWSなどのサービスを使用してコンピューターをクラウドでレンタルすることをお勧めします。 また、NVIDIAドライバーとCUDAを必ずインストールしてください。 この本の残りの部分では、GPU / CUDAを参照するときは常に、必要なドライバーがインストールされていることを前提としています。 CPUを搭載したコンピュータを引き続き使用できます。 ただし、トレーニング時間ははるかに長くなり、我慢する必要があります!

Installing software tools and packages

この本では、Python、PyTorch、およびその他のPythonパッケージを使用して、さまざまなディープラーニングアルゴリズムを開発します。 したがって、ディープラーニングの実装を行う前に、 まず、Anaconda、PyTorch、Jupyter Notebookなどのいくつかのソフトウェアツールをインストールする必要があります。

How to do it...

次のセクションでは、必要なソフトウェアツールをインストールする方法について説明します。

Installing Anaconda

Anacondaをインストールするには、次の手順を見てみましょう。

  1. Anacondaをインストールするには、次のリンクにアクセスしてください:https://www.anaconda.com/products/individual
  2. 提供されているリンクには、Windows、macOS、およびLinuxの3つのディストリビューションがあります。 目的のディストリビューションを選択します。 Python 2.x用、もしくは、Python 3.x用をダウンロードできます。 Linuxシステムを使用し、Python 3.xバージョンをダウンロードしてインストールすることをお勧めします。
  3. Anacondaをインストールしたら、PyTorch実験用のconda環境を作成します。 たとえば、次のコードブロックでは、conda-pytorchを次のように作成します。
  4. 次のコマンドを使用して、Linux / Macで環境をActivateします。
  5. 次のコマンドを使用して、Windowsで環境をActivateします。

次のセクションでは、PyTorchのインストール方法を示します。

Installing PyTorch

次に、PyTorchのインストールを見てみましょう。

  1. PyTorchをインストールするには、次のリンクをクリックします。https://pytorch.org/
  2. 「クイックスタートローカル」セクションまでスクロールします。 対話型の表から、コンピューターシステムに適したオプションを選択します。
  3. たとえば、Python 3.7とCUDA 9.0とともに、Condaパッケージを使用してLinux OSにPyTorch 1.0をインストールする場合、 次のスクリーンショットに示すように選択できます。
  4. テーブルの最後にあるコマンドをコピーして、ターミナルで実行します。
  5. PyTorch 1.0とtorchvisionがインストールされます。 次のセクションでは、インストールを確認する方法を示します。

Verifying the installation

PyTorchをPythonにインポートして、インストールが正しいことを確認しましょう。

  1. ターミナルからPythonを起動します。
  2. torchをインポートして、そのバージョンを取得します。
  3. torchvisionをインポートして、そのバージョンを取得します。
  4. CUDAが利用可能かどうかを確認します。
  5. CUDAデバイスの数を取得します。
  6. CUDAデバイスIDを取得します。
  7. CUDAデバイス名を取得します。

次のセクションでは、他のパッケージをインストールします。

Installing other packages

パッケージの大部分はAnacondaを使用してインストールされます。 ただし、本書で引き続き説明するように、他のパッケージを手動でインストールする必要がある場合があります。

  1. この本では、Jupyter Notebookを使用してコードを実装します。 環境にJupyter Notebookをインストールします。
  2. 画像とプロットを表示するには、matplotlibをインストールします。
  3. pandasをインストールして、DataFramesを使えるようにします。

次のセクションでは、各ステップについて詳しく説明します。

How it works...

必要な手順に従って、Anacondaのインストールから始めました。 Anacondaをインストールした後、PyTorch実験用のconda環境を作成しました。 Windows、macOS、Linuxなどの任意のオペレーティングシステムを使用できます。 この本にはLinuxをお勧めします。 次に、PyTorchをconda環境にインストールしました。

次に、PyTorchのインストールを確認しました。 ターミナルまたはアナコンダプロンプトからPythonを起動しました。 次に、トーチとトーチビジョンをインポートして、パッケージのバージョンを取得しました。 次に、CUDAデバイスの可用性と数を確認しました。 私たちのシステムは1つのGPUを搭載しています。 また、CUDAデバイスのIDと名前も取得しました。 私たちのGPUデバイスはGeForce GTX TITAN Xです。 デフォルトのデバイスIDはゼロです。

最後に、Jupyter Notebook、matplotlib、およびpandasをconda環境にインストールしました。 この本のスクリプトはJupyter Notebookで開発します。 また、matplotlibを使用してグラフをプロットして画像を表示し、データフレームを操作するパンダも使用します。

Working with PyTorch tensors

PyTorchはテンソルに基づいて構築されています。 PyTorchテンソルは、NumPy配列に似たn次元配列です。

NumPyに精通している場合は、次の表に示すように、テンソルを操作するときに構文に類似性があることがわかります。

このレシピでは、テンソルを定義および変更し、テンソルを配列に変換し、 それらをコンピューティングデバイス間で移動する方法を学習します。

How to do it...

次のコード例では、PythonまたはJupyter Notebookアプリをターミナルから起動できます。

Defining the tensor data type

デフォルトのテンソルデータタイプはtorch.float32です。 これは、テンソル演算で最も使用されるデータ型です。 見てみましょう:

  1. デフォルトのデータ型でテンソルを定義します。
  2. テンソルを定義するときにデータ型を指定します。

次のセクションでは、テンソルのタイプを変更する方法を示します。

Changing the tensor's data type

.typeメソッドを使用してテンソルのデータ型を変更できます。

  1. torch.uint8タイプでテンソルを定義します。
  2. テンソルのデータ型を変更します。

次のセクションでは、テンソルをNumPy配列に変換する方法を示します。

Converting tensors into NumPy arrays

PyTorchテンソルをNumPy配列に簡単に変換できます。 見てみましょう:

  1. テンソルを定義します。
  2. テンソルをNumPy配列に変換します。

次のセクションでは、NumPy配列をテンソルに変換する方法を示します。

Converting NumPy arrays into tensors

NumPy配列をPyTorchテンソルに変換することもできます:

  1. NumPy配列を定義します。

  2. NumPy配列をPyTorchテンソルに変換します。

次のセクションでは、デバイス間でテンソルを移動する方法を示します。

Moving tensors between devices

デフォルトでは、PyTorchテンソルはCPUに保存されます。 PyTorchテンソルをGPUで利用して、コンピューティングを高速化できます。 これは、NumPy配列と比較したテンソルの主な利点です。 この利点を得るには、テンソルをCUDAデバイスに移動する必要があります。 .toメソッドを使用して、テンソルを任意のデバイスに移動できます。

  1. CPUでテンソルを定義します。
  2. CUDAデバイスを定義します。
  3. テンソルをCUDAデバイスに移動します。
  4. 同様に、テンソルをCPUに移動できます。
  5. 任意のデバイスでテンソルを直接作成することもできます。

次のセクションでは、各ステップについて詳しく説明します。

How it works...

最初に、テンソルを定義し、テンソルタイプを取得して、そのタイプを変更しました。 次に、PyTorchテンソルをNumPy配列に、またはその逆に変換しました。 また、CPUとCUDAデバイス間でテンソルを移動しました。 次に、.typeメソッドを使用してテンソルデータタイプを変更する方法を示しました。 次に、PyTorchテンソルを.numpyメソッドを使用してNumPy配列に変換する方法を示しました。

その後、.from_numpy(x)メソッドを使用してNumPy配列をPyTorchテンソルに変換する方法を示しました。 次に、.toメソッドを使用して、テンソルをCPUデバイスからGPUデバイスに、またはその逆に移動する方法を示しました。 ご覧のとおり、デバイスを指定しない場合、テンソルはCPUデバイスでホストされます。

See also

Tensorのタイプと演算の完全なリストについては、次のリンクにアクセスしてください。 https://pytorch.org/docs/stable/tensors.html