Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
やさしくわかるPyTorch入門 / Easy to Learn PyTorch
Search
payanotty
October 28, 2021
Programming
1
960
やさしくわかるPyTorch入門 / Easy to Learn PyTorch
connpassで実施したセミナーの資料になります。
https://studyco.connpass.com/event/227486/
payanotty
October 28, 2021
Tweet
Share
More Decks by payanotty
See All by payanotty
トークナイザー入門
payanotty
2
1.2k
LLM_Prompt_Recovery
payanotty
3
840
Embeddingモデルを使ったベクトル化のしくみ、fine-tuning手法を解説
payanotty
14
4.2k
Transformerによるテキストベクトル化を解説
payanotty
4
2.3k
Kaggle_LLMコンペの攻略法を解説.pdf
payanotty
1
1.3k
ManimMLでイケてるアニメーションを作ろう
payanotty
0
650
Lets Finetune LLM
payanotty
3
1.2k
Stable Diffusion Web UI, Let Your Fave Eat Ramen
payanotty
1
980
Lets Finetune Stable Diffusion
payanotty
0
1.2k
Other Decks in Programming
See All in Programming
nekko cloudにおけるProxmox VE利用事例
irumaru
3
430
暇に任せてProxmoxコンソール 作ってみました
karugamo
1
720
[JAWS-UG横浜 #76] イケてるアップデートを宇宙いち早く紹介するよ!
maroon1st
0
460
テストケースの名前はどうつけるべきか?
orgachem
PRO
0
130
Jakarta EE meets AI
ivargrimstad
0
240
今年のアップデートで振り返るCDKセキュリティのシフトレフト/2024-cdk-security-shift-left
tomoki10
0
200
わたしの星のままで一番星になる ~ 出産を機にSIerからEC事業会社に転職した話 ~
kimura_m_29
0
180
Mermaid x AST x 生成AI = コードとドキュメントの完全同期への道
shibuyamizuho
0
160
モバイルアプリにおける自動テストの導入戦略
ostk0069
0
110
テストコード文化を0から作り、変化し続けた組織
kazatohiei
2
1.5k
Symfony Mapper Component
soyuka
2
730
rails statsで大解剖 🔍 “B/43流” のRailsの育て方を歴史とともに振り返ります
shoheimitani
2
930
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
95
17k
How STYLIGHT went responsive
nonsquared
95
5.2k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Unsuck your backbone
ammeep
669
57k
Adopting Sorbet at Scale
ufuk
73
9.1k
How to Think Like a Performance Engineer
csswizardry
22
1.2k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Scaling GitHub
holman
458
140k
Code Reviewing Like a Champion
maltzj
520
39k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
Transcript
やさしくわかる PyTorch入門
• 名前: 早野 康太 • お仕事: ◦ 深層学習エンジニア • 好きなこと:
◦ 音ゲー ◦ アニメ ◦ ウマ娘 ◦ 犬とか猫 発表者紹介
• Facebook AI Research (FAIR)により 開発された深層学習ライブラリ • Pythonで深層学習するなら TeonsorFlowとの2択 •
モデルの構造や学習の過程を 直感的に記述することができる PyTorchについて
• Tensor ◦ numpyとほとんど同じ感覚で使える ◦ 勾配 (偏微分) に関する 情報を持っている ◦
GPU上での行列計算が可能 • nn.Module ◦ 全てのモデルのベースとなる型 ◦ 新しいモデルを定義するときは これを継承する Tensor型とModule型
• Tensor ◦ numpyとほとんど同じ感覚で使える ◦ 勾配 (偏微分) に関する 情報を持っている ◦
GPU上での行列計算が可能 • nn.Module ◦ 全てのモデルのベースとなる型 ◦ 新しいモデルを定義するときは これを継承する Tensor型とModule型
• nn.Module ◦ パラメータをstate_dictの形式で 書き出せる ▪ {‘layer1’: Tensor()...} みたいな感じ Tensor型とModule型
• nn.Module ◦ パラメータをstate_dictの形式で 書き出せる ▪ {‘layer1’: Tensor()...} みたいな感じ ◦
forward ▪ 入力側から変数を流す ▪ モデルに合わせて自分で定義 Tensor型とModule型 forward
• nn.Module ◦ パラメータをstate_dictの形式で 書き出せる ▪ {‘layer1’: Tensor()...} みたいな感じ ◦
forward ▪ 入力側から変数を流す ▪ モデルに合わせて自分で定義 ◦ backward ▪ モデルの出力テンソルに対して 実行する ▪ 誤差逆伝播法で勾配を計算する Tensor型とModule型 backward forward
• nn.Module ◦ パラメータをstate_dictの形式で 書き出せる ▪ {‘layer1’: Tensor()...} みたいな感じ ◦
forward ▪ 入力側から変数を流す ▪ モデルに合わせて自分で定義 ◦ backward ▪ モデルの出力テンソルに対して 実行する ▪ 誤差逆伝播法で勾配を計算する Tensor型とModule型 backward forward
• 出力側から入力側に向かって 誤差信号を伝播させていく • 誤差信号 = 偏微分の値 ◦ (正確ではないが) ∂z/∂yとか∂y/∂xが伝播するイメージ
誤差逆伝播法 x y z backward forward
• PyTorchではTensor型同士の 計算が行われる際、 計算結果の中に勾配計算に 必要な情報が保持される • 計算結果にbackwardメソッドを 実行することで 誤差逆伝播法によって 勾配が計算される
自動微分
• y = x2, z = Σx ij 自動微分 x
y z
• y = x2, z = Σx ij • z.backward()
自動微分 x y z dz/dy dy/dx
• y = x2, z = Σx ij • z.backward()
• backward()を実行するとgrad内に勾配値が記録される ◦ y.grad = dz/dy ◦ x.grad = dz/dy * dy/dx 自動微分 x y z dz/dy dy/dx
• 勾配の分だけパラメータを更新する 微分→パラメータ更新 Loss Weight 勾配
• 勾配の分だけパラメータを更新する 微分→パラメータ更新 Loss Weight
• 勾配の分だけパラメータを更新する 微分→パラメータ更新 Loss Weight
• 勾配の分だけパラメータを更新する ◦ 実際はもう少し工夫があって アルゴリズムによっていろんな 更新の仕方がある • 勾配更新のアルゴリズム ◦ SGD
◦ Adam ← 大体これ使とけば間違いない ◦ AdaBeliaf 微分→パラメータ更新 Loss Weight
• forward ◦ モデルに入力を流仕込む ◦ モデルの出力と正解との誤差を計算する PyTorchでの深層学習の3つのステップ
• forward ◦ モデルに入力を流仕込む ◦ モデルの出力と正解との誤差を計算する • backward ◦ 誤差逆伝播で勾配を計算する
PyTorchでの深層学習の3つのステップ
• forward ◦ モデルに入力を流仕込む ◦ モデルの出力と正解との誤差を計算する • backward ◦ 誤差逆伝播で勾配を計算する
• step ◦ 勾配の分だけパラメータを更新する PyTorchでの深層学習の3つのステップ
• 手書き文字画像データ(MNIST)の分類に PyTorchでチャレンジしてみます ◦ Google Colabのノートブック PyTorch実践 ラベル = 5
• PyTorchの特徴 ◦ 自動微分の機能により forward → backwardの流れを直感的に記述することができる ◦ (今回は触れなかったが) ▪
GPU上での計算を高速化する手法に対応している ▪ モデルのレイヤーごとに学習率をいじれるなど 柔軟性の高いモデル設計が可能 • Google Colaboratoryで結構カンタンに試せちゃうので 興味ある方はぜひ触ってみてください さいごに