【Pytorch】インストール方法について

今回はpytorchについて、習得をしていきます。

pytorchは画像や自然言語などの機械学習開発ができるライブラリです。

他にも、Tensorflow、Kerasなどがありますが、最近はpytorchが人気です。

本記事のサンプルコード

>>サンプルコード(jupyter notebook)

pytorchとは?

pytorchはFacebookに開発されたライブラリで、画像や自然言語などの機械学習開発ができます。

TensorflowはGoogleに開発されています。

どちらを使っても、開発ができますが、最近はpytorchが人気です。

Googleトレンド見ても、その傾向がわかりますね。

ちなみに、KerasはベースにTensorflowを使っていて、より開発がしやすくされているものです。

どれも、numpyのような行列演算をするもので、行列データ(配列)をTensor(テンソル)と言います。

どちらも、人気のライブラリなので、情報に不足することがありません。

違いは、pytorchはnumpyと同じ感覚で使えるという点です。

Tensorflowはモデルを決めたら、そのモデルが実行されるのですが、計算処理をデバッグしながら追いにくいなど初学者には使い方がわかりにくいです。

pytorchはnumpyと同じように、実行したら、その結果を受け取って、また次の計算と進んでいくので、感覚的にも馴染みやすいです。

インストール

pytorchは下記の公式より、OSなどを選択して、インストールします。

NVIDIAのGPUを搭載してないパソコンで使う方は、CUDAをNoneとします。

>> pytorch公式

Run this Commandをコピーして、インストールしましょう。

pytorchの使い方

pytorchはnumpyと似ているのが特徴ですが、pytorchのTensorからnumpy(ndarray)に変換することも多いです。

機械学習のモデルは自分で作らなくても、すでに作ってあるものを読み込むことが多いですが、最終的に出力された結果はTensorで出てくるので、このTensorが操作ができなければいけません。

そのためにも、ここでTensorの使い方を理解していきましょう。

ライブラリの読み込み

ライブラリの読み込みは次のようになります。

numpyも使うので、numpyも一緒に読み込みます。

テンソルの作成

基本的に、numpyと同じような方法になります。

乱数,0,1,の作成

まず、乱数、0、1のテンソルを作っていきます。

メソッド 機能
rand 0以上、1未満の乱数のテンソル
ones 1のテンソル
zeros 0のテンソル

引数に次元数やデータ数を決めます。

今回は、2次元の2×3のデータを作ります。

乱数の結果を見てみます。

0-1の乱数ができています。

最初の方にtensorとありますね。tensorでできていることとがわかります。

他の、ones_tensorもzeros_tensorもそれぞれ1と0が入っています。

listから作成

listからテンソルを作成します。

作成するデータは、1から6の2次元の2×3とします。

numpyから作成

listだけでなく、numpyからもテンソルが作成できます。

dtype=torch.int32となっているのは、pytorchの型になります。

int32は整数型で、32は32ビットを表していて、この数字で表現できる数値の大きさが決まります。

>> pytorch型の一覧

tensorからnumpyの変換

numpyからtensorを作る方法を見ましたが、逆の方法です。

機械学習で推論したあとは、numpyに取り出して、処理することがあります。

to(‘cpu’)となっているところは、次で紹介しますが、numpyにするときは必ず入れておきましょう。

デバイスの設定

テンソルにはデバイスの設定があります。

簡単に言えば、テンソルがCPUとGPUどちらを使って計算するかの設定です。

GPUが使えるかはtorch.cuda.is_available()がTrue /Falseで返してくるので、次のようなコードで設定するデバイスを決めます。

 

NVIDIAのGPUのパソコンで、cudaやcudnnの設定がしてあれば、cudaとなります。

それ以外は、cpuとなります。

設定する場合はtoを使います。

意図的にCPUを使いたい場合は、to(‘cpu’)とすればOKです。

GPUが複数使える場合、’cuda’としていますが、’cuda:デバイスNo’とすることで、GPUのデバイスを指定することができます。

デバイスNoは0から始まる数字です。

テンソルの確認

次にテンソルの情報についてみていきます。

次のデータについてみていきます。

属性 機能
shape 次元とデータ数を確認
dtype 型の確認
device デバイスの確認

形は次元数、データ数です。

型のタイプ

テンソルのデータの型のタイプを確認します。

>> pytorch型の一覧

デバイス

テンソルに設定されているデバイスを確認します。

テンソルからデータを取り出す

tensorはnumpyと同じように座標を指定したり、開始No:終了Noを使って範囲を指定した取得もできます。

numpyと同じなので、簡単にいくつか紹介します。

1から9の3×3のデータを使います。

テンソルの計算

次はテンソル同士の計算を紹介します。

四則演算

まず、四則演算を計算します。

使うのは次の2つのデータを使います。

計算してみます。

pytorchでもブロードキャストが使えます。

足したのは2を1つだけですが、x_dataの全てに足されます。

行列の積

行列の積にはmatmulを使います。

次の2×3と3×2の積を計算します。

転置

テンソルの転置はtを使います。

転置はWikiにわかりやすい図があります。

>> 転置について

次元データ数の入れ替え

画像データを取り扱うと、高さ×幅×chの3次元で取得できます。

これをch×高さ×幅と入れ替る時があります。

その時はtranspose(次元No, 次元No)を使います。

次元Noには、入れ替える次元を2つ入れます。

64×32×3のデータで確認します。

まとめ

以上がpytorchの使い方です。

numpyとほとんど同じだったと思います。

最初の方は、pytorchのライブラリに入っているモデルをそのまま使っていきます。

最初の教師データの読み込みと推論結果の処理をすることが多いので、ここら辺の知識をしっかり抑えておくとよいです。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です