【入門編】PyTorchとは何か?インストールから実装までわかりやすく解説

『PyTorch』とは、Facebookが開発を主導したPython向けの機械学習ライブラリです。コードが書きやすく、使いやすいため、開発者から人気があります。

この記事では、PyTorchとは何か、また、インストールや実装方法を入門者に向けて詳しく解説します。

PyTorchとは?入門者にもわかりやすく解説

PyTorchとは、Pythonのオープンソース機械学習ライブラリ(Deep Learningライブラリ)です。

PyTorchで「パイトーチ」と読み、2016年1月15日、Facebookの人工知能研究グループにより初期開発されました。初版が公開された2016年から徐々に注目を集め、現在ではPythonの機械学習ライブラリとして高い人気を誇ります。

なお、Pythonについて詳しく知りたい方は「Pythonとは?何に使えるの?Pythonの特徴や使い道を詳しく解説!」を参考にしてください。

機械学習ライブラリ

PyTorch のメリットとは?

PyTorchには、下記のようなメリットがあります。

  • 直感的にコードを書ける
  • 参照リソースが豊富
  • define by run

それぞれのメリットを一つひとつご紹介していきます。

◎直感的にコードを書ける

PyTorch は、Pythonの機械学習プロセスで頻繁に使われるライブラリ「Numpy」と操作方法が非常に似ています。そのため、PythonエンジニアならPyTorchに短時間で慣れることができるでしょう。

なお、機械学習の計算を高速化させられる拡張モジュール「NumPy」について、詳しく知りたい方は「Pythonの拡張モジュール「NumPy」とは?インストール方法や基本的な使い方を紹介!」をご覧ください。

◎参照リソースが豊富

PyTorchではコミュニティが活発であるため、参照できる情報が豊富に存在します。そのため、操作方法や実装する上で必要な情報を入手しやすい環境です。

また、PyTorchは人工知能の研究者にも使用されているため、論文等がGitHubで公開されることも少なくありません。最新の手法を入手しやすく、最先端の機械学習プログラミングも可能です。

◎define by run

PyTorchはdefine by runとなっています。

define by runとは、動的なニューラルネットワーク構築であり、データを入力した際に定義する手法のことになります。「データを流しながら計算グラフを構築してくれるアルゴリズム」と表現すると理解しやすいかもしれません。

define by run方式は、動的フレームワークなので、直感的にRNN(再帰型ニューラルネットワーク)を書くことができる、デバックが容易といったメリットがあります。このメリットにより、PyTorchを利用するという方も多いです。

最新手法

入門知識:PyTorchのテンソルとは?

PyTorchを利用する上で、テンソルの知識は必要不可欠です。

テンソルとは、PyTorchの基本となるデータ構造になります。テンソルは、正確にはtorch.Tensorと表示されるものです。

多次元配列を形成できるデータ構造で、拡張モジュールNumPyに置き換えて言うと、ndarray型に似ています。Tensor(テンソル)型とndarray型の違いは、GPUでの演算が可能な点です。

テンソルについてもっと詳しく知りたい方は「【TENSORFLOW入門】特徴や使い方をわかりやすく解説!」をご覧ください。

 

\文字より動画で学びたいあなたへ/

Udemyで講座を探す >

いざPyTorch入門!インストール方法を解説

次に、PyTorchのインストール方法を解説します。

PyTorch公式サイトにアクセス

まずは、PyTorchの公式サイトにアクセスします。

https://pytorch.org

インストール環境を確認する

次に、インストール環境を確認します。PyTorchの公式URLにアクセスすると、下記の画像のような部分があります。

一つひとつが選択できるようになっており、自分の環境に合ったインストール方法を知ることができます。以下で、選択項目について詳しく解説していきますので、参考にしてください。

  • PyTorch Build

PyTorch Buildは、どのようなバージョンをインストールするかを示します。特にこだわりがない場合は、安定版のStable1.6.0を選択してください。

  • Your OS

Your OSはインストール先のOSです。Linux、Mac、Windowsの3つの中から選択してください。

  • Package

Packageでは、何を使ってインストールするのかを選ぶことができます。Conda、Pip、LibTorch、Sourceの4つの中から選ぶことが可能です。Windowsにインストールする場合は、Condaが推奨されています。

  • Language

Languageでは、使用するプログラミング言語を選択できます。Pythonもしくは、C++/Javaの2種類から選ぶことが可能です。

  • CUDA

CUDAでは、CUDAのバージョンを選択することができます。

Run this Commandの内容を確認

項目をすべて選択したら、その下のRun this Commandの中でインストールコマンドが表示されます。

例えば、PackageをPipと選択して安定バージョンをインストールする場合、下記のようなコマンドが出力されます。

このコマンドを実行すれば、インストールが開始されます。

 

PyTorchの実装を例題で解説【サンプルコード付き】

最後に、PyTorchでネットワーク構築の実装を例題で解説します。サンプルコード付きになりますので、入門者の方も、ぜひ参考にしてください。

モデル、ネットワークの構築

まずは、使用するネットワークを定義します。PyTorchでは、tourch.nn.Moduleというクラスを継承し、自分オリジナルのネットワークを作成していくのが一般的です。今回は、クラス名をUdemyNetとし、作成していきます。

UdemyNetという名前でクラスを宣言し、コンストラクターの中でネットワーク構成を定義しています。ネットワーク構成は入力層と中間層、出力層の3層構造です。これらは、torch.nn.Linearで定義されています。また、その後に順伝播の関数を定義して完成です。

データ取得

次にMINISTを取得する関数を作成していきます。

PyTorchでは、データローダーでデータを扱います。torch.utils.data.DataLoader()の第一引数には、データセット、第二引数にバッチサイズ、第三引数にシャッフルを指定。第三引数のシャッフルをTrueにするとTensorDatasetの中身がシャッフルされます。

torch.utils.data.DataLoader()の第一引数には、クラスインスタンスであるdatasets.MNISTが指定されています。datasets.MNISTの第一引数は、データダウンロード先を指定してください。

メイン部分を記述

次に、メイン処理部分を書いていきます。先程作成したUdemyNetを構築し、reading_DATAでデータを取得しましょう。メイン部分のコードはシンプルです。下記のコードを参考にしてください。

学習部分を作成

次に、学習部分の実装を行います。学習部分はforループを使用し、学習部分に訓練部分のループと検証用のループを作成していきましょう。訓練部分のサンプルコードは下記の通りです。

forループで訓練部分を定義しています。output=net(data)とコードを書けば、ネットワークのデータと入力と出力ができるので、とても便利です。loss = f.nll_loss(output, target)でロス計算を定義し、ロスをもとに誤差をloss.backward()しています。

検証部分を作成

最後に、検証部分を作成します。サンプルコードは下記の通りです。

訓練部分とコードは非常に似ており、訓練コードを理解できれば、テスト部分も容易に理解することができるでしょう。テスト部分では、精度を測定するために、pred = output.argmax(dim=1, keepdim=True)部分でニューロンインデックスを取得しています。

ここではPyTorchについての基礎知識とインストール方法、実装方法について解説しました。PyTourchは非常に書きやすい機械学習ライブラリで、初心者でも習得することは難しくありません。

この機会に、ぜひPyTorchを学んでみてください。