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

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

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

公開日:2020年8月27日

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と選択して安定バージョンをインストールする場合、下記のようなコマンドが出力されます。

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

 

Udemyおすすめ講座

【Hands Onで学ぶ】PyTorchによる深層学習入門

【Hands Onで学ぶ】PyTorchによる深層学習入門

4.4(1,201 件の評価)

7,004 人の受験生

作成者: Tetsuya T(データサイエンス/機械学習・深層学習/ベイズ統計/科学技術計算)

人気急上昇中のAIフレームワークであるPyTorchを用いて深層学習の様々なモデルを構築し、機械学習・深層学習の基礎を固めましょう。機械学習・深層学習を"知識として知っている"人から、"使える・使いこなせる"人へとステップアップしませんか?

\無料でプレビューをチェック!/

講座を見てみる

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を学んでみてください。

下記講座のレビューを一部紹介

評価:★★★★★
google colabを使用して環境構築の手間がなく、丁寧に教えてくれているので、短時間で勉強を進めることができる。

評価:★★★★★
LSTMなど高等なディープラーニングモデルの解説と実装までを簡潔かつ丁寧に説明していただき、とても満足しております。