「PyTorch」の版間の差分

提供:ペチラボ書庫
ナビゲーションに移動 検索に移動
(ページの作成:「https://pytorch.org/」)
 
編集の要約なし
1行目: 1行目:
https://pytorch.org/
https://pytorch.org/
AIをつくろう
== やりかた ==
=== データセットの準備 ===
https://pytorch.org/docs/stable/data.html
* Datasetを作成
** 適宜、データ拡張
* DataLoaderを作成
=== モデルの定義 ===
モデルは<syntaxhighlight inline>torch.nn.Module</syntaxhighlight>の派生クラスである必要がある。
<syntaxhighlight inline>torch.nn.Sequential</syntaxhighlight>
<syntaxhighlight inline>torch.nn.ModuleList</syntaxhighlight>
を使うこともできる。
=== 学習 ===
<syntaxhighlight inline>model.train()</syntaxhighlight>を実行しておく。
各イテレーションにおいて必要な処理は以下の通り。
# モデルにデータを入力して出力を得る(順伝播)
# [[損失関数]]を計算する。
# 勾配を計算する前に<syntaxhighlight inline>torch.Optimizer.zero_grad()</syntaxhighlight>または <syntaxhighlight inline>nn.Module.zero_grad()</syntaxhighlight>[https://pytorch.org/docs/stable/generated/torch.nn.Module.html#torch.nn.Module.zero_grad]で勾配を初期化しておく。
# 勾配を計算する。<syntaxhighlight inline>loss.backward()</syntaxhighlight>
# 誤差逆伝播 <syntaxhighlight inline>optim.step()</syntaxhighlight>
=== テスト ===
<syntaxhighlight inline>model.eval()</syntaxhighlight>を実行しておく。
これにより学習時に有効になっていたdropoutやbatch normなどが無効化される。
また、<syntaxhighlight inline>with torch.no_grad():</syntaxhighlight>としておけば勾配の計算が省かれ、速くなる。

2023年2月8日 (水) 04:09時点における版

https://pytorch.org/

AIをつくろう

やりかた

データセットの準備

https://pytorch.org/docs/stable/data.html

  • Datasetを作成
    • 適宜、データ拡張
  • DataLoaderを作成

モデルの定義

モデルはtorch.nn.Moduleの派生クラスである必要がある。

torch.nn.Sequentialtorch.nn.ModuleList を使うこともできる。

学習

model.train()を実行しておく。 各イテレーションにおいて必要な処理は以下の通り。

  1. モデルにデータを入力して出力を得る(順伝播)
  2. 損失関数を計算する。
  3. 勾配を計算する前にtorch.Optimizer.zero_grad()または nn.Module.zero_grad()[1]で勾配を初期化しておく。
  4. 勾配を計算する。loss.backward()
  5. 誤差逆伝播 optim.step()

テスト

model.eval()を実行しておく。 これにより学習時に有効になっていたdropoutやbatch normなどが無効化される。 また、with torch.no_grad():としておけば勾配の計算が省かれ、速くなる。