PyTorch
機械学習フレームワーク
Meta製
Soumith Chintala
https://stackoverflow.com/questions/51530778/why-is-pytorch-called-pytorch
PyTorchの名前の由来
site
docs
colabで使う
!pip install -U torch torchvision
特徴
高速に動作
独自テンソル処理ライブラリ
NumPyより高速
define-by-run
データの前処理など
transformsを使う
Resize
CenterCrop
画像の切り抜き
Normalize
色情報の標準化
Tensor
イメージ的にはKerasなどではNumPyと併用していたが、
torchを使うことで、
import torch
x = torch.zeros(5, 4)のようにtorchが提供するもので同様のことが行える
NumPyとの連携もできる
お互いに変換したり、演算したり
.numpy()でTensorをnumpy型に変換
vectorやmatrixのことは全てtensorと呼ぶ
x = torch.tensor([5.5, 3])
DataSet
データとそのラベルをペアにして保持したクラス
作られたインスタンスは前処理が終わったデータとラベルのペアになる
コンストラクタの引数に前処理クラスを渡すことで、自動的に前処理を行える
学習データと訓練データのそれぞれ用のインスタンスを作る
もちろん同じクラスから。
import torch.utils.data as dataのdataを継承してDataSetクラスを定義する
DataLoader
Datasetからどのようにデータを取り出すのかを設定するクラス
ミニバッチ学習とか
tourch.utils.data.DataLoaderを使えばいい
訓練用と、検証用のDataLoaderを作成する
https://qiita.com/takurooo/items/e4c91c5d78059f92e76d
http://takoroy-ai.hatenadiary.jp/entry/2018/08/12/224516
モデルを作る時の流れ
DataSetクラスを作成
事前に前処理クラスを作成する
DataLoaderクラスの作成
モデルを定義
順電波関数の定義
損失関数の定義
最適化手法の設定
学習
テストデータで推論
PyTorchで自動微分
docsにもある
torch.Tensorクラスでテンソルを扱う
.requires_grad=True
.backward()で勾配を取得
.gradで勾配データを保持
.detach()で勾配をトラックしなくなる
.requires_grad_で.requires_grad=Trueフラグを反転
Functionクラス
.grad_fn
https://www.hellocybernetics.tech/entry/2019/10/12/204829
v1.3
学習教材
『PyTorchによる発展ディープラーニング』
Udemy
https://speakerdeck.com/rishigami/pytorch-moderuyi-zhi-falsesusume
tfからの移植
https://speakerdeck.com/fam_taro/30-fen-xi-konpelthui-number-1
https://karaage.hatenadiary.jp/entry/2020/02/03/073000
https://github.com/fastai/fastbook