SlideShare ist ein Scribd-Unternehmen logo
1 von 11
Downloaden Sie, um offline zu lesen
Pytorch入門(3)
前回
- 自動微分により学習時に勾配を算出する
- 勾配を元にwの値をupdateしていく
今回
- 前回の実装をtorchの機能で書き換える
- 予測機能はtorchのmodel
- 損失関数はtorchのcriterion
- 勾配の更新はtorchのoptimizer
- データは前回と同様のものを利用する
class Model(torch.nn.Module):
def __init__(self):
super(Model, self).__init__()
# Linear(in_ch, out_ch) : in * w + b
self.linear = torch.nn.Linear(1, 1)
def forward(self, x):
x = self.linear(x)
return x
model
- 値を予測する機能(前回のforward関数)の実装例
- torch.nn.Moduleを継承したクラスを作成
- forwardメソッドに値を予測する機能を定義
x, y = torch.tensor([[1.],[2.],[3.]]), torch.tensor([[2.],[4.],[6.]])
model = Model()
pred = model(x[0])
print(pred)
print(model.linear.weight)
=> tensor([-1.5321], grad_fn=<AddBackward0>)
=> tensor([[-0.8516]], requires_grad=True)
model
- 定義したモデルの使用例
- 実体化したmodelに説明変数を渡すと予測値が戻る
- wの初期値はランダムらしい
criterion = torch.nn.MSELoss()
pred = model(x[0])
loss = criterion(pred, y[0])
print(loss)
=> tensor(12.4759, grad_fn=<MseLossBackward>)
criterion
- 損失関数(前回のloss_fn)を定義
- 前回の実装と近いMeanSquadErrorを利用する
- 利用方法は以下の通り
pred = model(x[0])
loss = criterion(pred, y[0])
loss.backward()
print(loss)
print(model.linear.weight.grad)
=> loss: tensor(3.1791, grad_fn=<MseLossBackward>)
=> grad: tensor([[-3.5660]])
grad
- 勾配の算出はcriterionの戻り値をbackward()する
- 重み、勾配はモデル内に存在し以下で出力できる
- 今回の勾配は以下の通り
optimizer
- 勾配を重みへ反映する処理
- 今回は確立的勾配降下法を利用
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
pred = model(x[0])
loss = criterion(pred, y[0])
loss.backward()
print(model.linear.weight.item(), model.linear.weight.grad.item())
optimizer.step() #=> 勾配を重みに反映
print(model.linear.weight)
optimizer.zero_grad() #=> 勾配を0にセット
print(model.linear.weight.grad)
=> 0.9048234224319458 -2.2820169925689697
=> tensor([[0.9276]], requires_grad=True)
=> tensor([[0.]])
まとめ
import torch
x, y = torch.tensor([ [1.], [2.], [3.] ]), torch.tensor([ [2.], [4.], [6.] ])
class Model(torch.nn.Module):
def __init__(self):
super(Model, self).__init__()
self.linear = torch.nn.Linear(1, 1)
def forward(self, x):
x = self.linear(x)
return x
model = Model()
- 以上を踏まえた実装例(前半)
まとめ
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
criterion = torch.nn.MSELoss()
for epoch in range(300):
for _x, _y in zip(x, y):
pred = model(_x)
loss = criterion(pred, _y)
loss.backward()
optimizer.step()
optimizer.zero_grad()
pred = model(torch.tensor([4.]))
print(pred)
=> tensor([7.9167], grad_fn=<AddBackward0>)
- 以上を踏まえた実装例(後半)
終了

Weitere ähnliche Inhalte

Was ist angesagt?

「深層学習」勉強会LT資料 "Chainer使ってみた"
「深層学習」勉強会LT資料 "Chainer使ってみた"「深層学習」勉強会LT資料 "Chainer使ってみた"
「深層学習」勉強会LT資料 "Chainer使ってみた"Ken'ichi Matsui
 
Chainer/CuPy v5 and Future (Japanese)
Chainer/CuPy v5 and Future (Japanese)Chainer/CuPy v5 and Future (Japanese)
Chainer/CuPy v5 and Future (Japanese)Seiya Tokui
 
画像認識で物を見分ける
画像認識で物を見分ける画像認識で物を見分ける
画像認識で物を見分けるKazuaki Tanida
 
ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装Ryosuke Okuta
 
Pythonによる機械学習入門 ~Deep Learningに挑戦~
Pythonによる機械学習入門 ~Deep Learningに挑戦~Pythonによる機械学習入門 ~Deep Learningに挑戦~
Pythonによる機械学習入門 ~Deep Learningに挑戦~Yasutomo Kawanishi
 
[第2版]Python機械学習プログラミング 第15章
[第2版]Python機械学習プログラミング 第15章[第2版]Python機械学習プログラミング 第15章
[第2版]Python機械学習プログラミング 第15章Haruki Eguchi
 
深層学習フレームワークChainerの紹介とFPGAへの期待
深層学習フレームワークChainerの紹介とFPGAへの期待深層学習フレームワークChainerの紹介とFPGAへの期待
深層学習フレームワークChainerの紹介とFPGAへの期待Seiya Tokui
 
PythonによるDeep Learningの実装
PythonによるDeep Learningの実装PythonによるDeep Learningの実装
PythonによるDeep Learningの実装Shinya Akiba
 
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築Tatsuya Tojima
 
[DSO] Machine Learning Seminar Vol.1 Chapter 1 and 2
[DSO] Machine Learning Seminar Vol.1 Chapter 1 and 2[DSO] Machine Learning Seminar Vol.1 Chapter 1 and 2
[DSO] Machine Learning Seminar Vol.1 Chapter 1 and 2Teruyuki Sakaue
 
Qlik Tips 20220315 Null値の課題と対策
Qlik Tips 20220315 Null値の課題と対策Qlik Tips 20220315 Null値の課題と対策
Qlik Tips 20220315 Null値の課題と対策QlikPresalesJapan
 
Chainerチュートリアル -v1.5向け- ViEW2015
Chainerチュートリアル -v1.5向け- ViEW2015Chainerチュートリアル -v1.5向け- ViEW2015
Chainerチュートリアル -v1.5向け- ViEW2015Ryosuke Okuta
 
[DSO] Machine Learning Seminar Vol.2 Chapter 3
[DSO] Machine Learning Seminar Vol.2 Chapter 3[DSO] Machine Learning Seminar Vol.2 Chapter 3
[DSO] Machine Learning Seminar Vol.2 Chapter 3Teruyuki Sakaue
 
Jupyter NotebookとChainerで楽々Deep Learning
Jupyter NotebookとChainerで楽々Deep LearningJupyter NotebookとChainerで楽々Deep Learning
Jupyter NotebookとChainerで楽々Deep LearningJun-ya Norimatsu
 
Few shot object detection via feature reweighting
Few shot object detection via feature reweightingFew shot object detection via feature reweighting
Few shot object detection via feature reweightingNobuaki Kuwabara
 
[DL輪読会]“Submodular Field Grammars Representation” and “Deep Submodular Functi...
[DL輪読会]“Submodular Field Grammars Representation” and “Deep Submodular Functi...[DL輪読会]“Submodular Field Grammars Representation” and “Deep Submodular Functi...
[DL輪読会]“Submodular Field Grammars Representation” and “Deep Submodular Functi...Deep Learning JP
 
はじめての人のためのDeep Learning
はじめての人のためのDeep Learningはじめての人のためのDeep Learning
はじめての人のためのDeep LearningTadaichiro Nakano
 
DTrace for biginners part(2)
DTrace for biginners part(2)DTrace for biginners part(2)
DTrace for biginners part(2)Shoji Haraguchi
 

Was ist angesagt? (20)

「深層学習」勉強会LT資料 "Chainer使ってみた"
「深層学習」勉強会LT資料 "Chainer使ってみた"「深層学習」勉強会LT資料 "Chainer使ってみた"
「深層学習」勉強会LT資料 "Chainer使ってみた"
 
Chainer/CuPy v5 and Future (Japanese)
Chainer/CuPy v5 and Future (Japanese)Chainer/CuPy v5 and Future (Japanese)
Chainer/CuPy v5 and Future (Japanese)
 
画像認識で物を見分ける
画像認識で物を見分ける画像認識で物を見分ける
画像認識で物を見分ける
 
ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装
 
Pythonによる機械学習入門 ~Deep Learningに挑戦~
Pythonによる機械学習入門 ~Deep Learningに挑戦~Pythonによる機械学習入門 ~Deep Learningに挑戦~
Pythonによる機械学習入門 ~Deep Learningに挑戦~
 
[第2版]Python機械学習プログラミング 第15章
[第2版]Python機械学習プログラミング 第15章[第2版]Python機械学習プログラミング 第15章
[第2版]Python機械学習プログラミング 第15章
 
深層学習フレームワークChainerの紹介とFPGAへの期待
深層学習フレームワークChainerの紹介とFPGAへの期待深層学習フレームワークChainerの紹介とFPGAへの期待
深層学習フレームワークChainerの紹介とFPGAへの期待
 
PythonによるDeep Learningの実装
PythonによるDeep Learningの実装PythonによるDeep Learningの実装
PythonによるDeep Learningの実装
 
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
 
[DSO] Machine Learning Seminar Vol.1 Chapter 1 and 2
[DSO] Machine Learning Seminar Vol.1 Chapter 1 and 2[DSO] Machine Learning Seminar Vol.1 Chapter 1 and 2
[DSO] Machine Learning Seminar Vol.1 Chapter 1 and 2
 
My code
My codeMy code
My code
 
Qlik Tips 20220315 Null値の課題と対策
Qlik Tips 20220315 Null値の課題と対策Qlik Tips 20220315 Null値の課題と対策
Qlik Tips 20220315 Null値の課題と対策
 
Chainerチュートリアル -v1.5向け- ViEW2015
Chainerチュートリアル -v1.5向け- ViEW2015Chainerチュートリアル -v1.5向け- ViEW2015
Chainerチュートリアル -v1.5向け- ViEW2015
 
[DSO] Machine Learning Seminar Vol.2 Chapter 3
[DSO] Machine Learning Seminar Vol.2 Chapter 3[DSO] Machine Learning Seminar Vol.2 Chapter 3
[DSO] Machine Learning Seminar Vol.2 Chapter 3
 
Jupyter NotebookとChainerで楽々Deep Learning
Jupyter NotebookとChainerで楽々Deep LearningJupyter NotebookとChainerで楽々Deep Learning
Jupyter NotebookとChainerで楽々Deep Learning
 
CuPy解説
CuPy解説CuPy解説
CuPy解説
 
Few shot object detection via feature reweighting
Few shot object detection via feature reweightingFew shot object detection via feature reweighting
Few shot object detection via feature reweighting
 
[DL輪読会]“Submodular Field Grammars Representation” and “Deep Submodular Functi...
[DL輪読会]“Submodular Field Grammars Representation” and “Deep Submodular Functi...[DL輪読会]“Submodular Field Grammars Representation” and “Deep Submodular Functi...
[DL輪読会]“Submodular Field Grammars Representation” and “Deep Submodular Functi...
 
はじめての人のためのDeep Learning
はじめての人のためのDeep Learningはじめての人のためのDeep Learning
はじめての人のためのDeep Learning
 
DTrace for biginners part(2)
DTrace for biginners part(2)DTrace for biginners part(2)
DTrace for biginners part(2)
 

Ähnlich wie Pytorch 03

機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価Shintaro Fukushima
 
Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用Seiya Tokui
 
Why Reactive Matters #ScalaMatsuri
Why Reactive Matters #ScalaMatsuriWhy Reactive Matters #ScalaMatsuri
Why Reactive Matters #ScalaMatsuriYuta Okamoto
 
SMCTC ライブラリの使用方法
SMCTC ライブラリの使用方法SMCTC ライブラリの使用方法
SMCTC ライブラリの使用方法Satoshi Minakuchi
 
【LT版】Elixir入門「第7回:Python/KerasをElixirから繋いでアレコレする」
【LT版】Elixir入門「第7回:Python/KerasをElixirから繋いでアレコレする」【LT版】Elixir入門「第7回:Python/KerasをElixirから繋いでアレコレする」
【LT版】Elixir入門「第7回:Python/KerasをElixirから繋いでアレコレする」fukuoka.ex
 
Opencv object detection_takmin
Opencv object detection_takminOpencv object detection_takmin
Opencv object detection_takminTakuya Minagawa
 
研究生のためのC++ no.4
研究生のためのC++ no.4研究生のためのC++ no.4
研究生のためのC++ no.4Tomohiro Namba
 
葉物野菜を見極めたい!by Keras
葉物野菜を見極めたい!by Keras葉物野菜を見極めたい!by Keras
葉物野菜を見極めたい!by KerasYuji Kawakami
 
pi-9. スーパークラス, サブクラス, 継承
pi-9. スーパークラス, サブクラス, 継承pi-9. スーパークラス, サブクラス, 継承
pi-9. スーパークラス, サブクラス, 継承kunihikokaneko1
 
mxnetで頑張る深層学習
mxnetで頑張る深層学習mxnetで頑張る深層学習
mxnetで頑張る深層学習Takashi Kitano
 
Or seminar2011final
Or seminar2011finalOr seminar2011final
Or seminar2011finalMikio Kubo
 
OpenCVの拡張ユーティリティ関数群
OpenCVの拡張ユーティリティ関数群OpenCVの拡張ユーティリティ関数群
OpenCVの拡張ユーティリティ関数群Norishige Fukushima
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料時響 逢坂
 

Ähnlich wie Pytorch 03 (20)

機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価
 
Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用
 
boost tour 1.48.0 all
boost tour 1.48.0 allboost tour 1.48.0 all
boost tour 1.48.0 all
 
Boost tour 1_40_0
Boost tour 1_40_0Boost tour 1_40_0
Boost tour 1_40_0
 
Boost Tour 1.50.0 All
Boost Tour 1.50.0 AllBoost Tour 1.50.0 All
Boost Tour 1.50.0 All
 
Why Reactive Matters #ScalaMatsuri
Why Reactive Matters #ScalaMatsuriWhy Reactive Matters #ScalaMatsuri
Why Reactive Matters #ScalaMatsuri
 
Gurobi python
Gurobi pythonGurobi python
Gurobi python
 
SMCTC ライブラリの使用方法
SMCTC ライブラリの使用方法SMCTC ライブラリの使用方法
SMCTC ライブラリの使用方法
 
【LT版】Elixir入門「第7回:Python/KerasをElixirから繋いでアレコレする」
【LT版】Elixir入門「第7回:Python/KerasをElixirから繋いでアレコレする」【LT版】Elixir入門「第7回:Python/KerasをElixirから繋いでアレコレする」
【LT版】Elixir入門「第7回:Python/KerasをElixirから繋いでアレコレする」
 
はじめてのPowerShell
はじめてのPowerShellはじめてのPowerShell
はじめてのPowerShell
 
20180123 power shell
20180123 power shell20180123 power shell
20180123 power shell
 
Opencv object detection_takmin
Opencv object detection_takminOpencv object detection_takmin
Opencv object detection_takmin
 
研究生のためのC++ no.4
研究生のためのC++ no.4研究生のためのC++ no.4
研究生のためのC++ no.4
 
葉物野菜を見極めたい!by Keras
葉物野菜を見極めたい!by Keras葉物野菜を見極めたい!by Keras
葉物野菜を見極めたい!by Keras
 
pi-9. スーパークラス, サブクラス, 継承
pi-9. スーパークラス, サブクラス, 継承pi-9. スーパークラス, サブクラス, 継承
pi-9. スーパークラス, サブクラス, 継承
 
mxnetで頑張る深層学習
mxnetで頑張る深層学習mxnetで頑張る深層学習
mxnetで頑張る深層学習
 
Or seminar2011final
Or seminar2011finalOr seminar2011final
Or seminar2011final
 
OpenCVの拡張ユーティリティ関数群
OpenCVの拡張ユーティリティ関数群OpenCVの拡張ユーティリティ関数群
OpenCVの拡張ユーティリティ関数群
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料
 
JSクラス定義
JSクラス定義JSクラス定義
JSクラス定義
 

Pytorch 03

  • 3. 今回 - 前回の実装をtorchの機能で書き換える - 予測機能はtorchのmodel - 損失関数はtorchのcriterion - 勾配の更新はtorchのoptimizer - データは前回と同様のものを利用する
  • 4. class Model(torch.nn.Module): def __init__(self): super(Model, self).__init__() # Linear(in_ch, out_ch) : in * w + b self.linear = torch.nn.Linear(1, 1) def forward(self, x): x = self.linear(x) return x model - 値を予測する機能(前回のforward関数)の実装例 - torch.nn.Moduleを継承したクラスを作成 - forwardメソッドに値を予測する機能を定義
  • 5. x, y = torch.tensor([[1.],[2.],[3.]]), torch.tensor([[2.],[4.],[6.]]) model = Model() pred = model(x[0]) print(pred) print(model.linear.weight) => tensor([-1.5321], grad_fn=<AddBackward0>) => tensor([[-0.8516]], requires_grad=True) model - 定義したモデルの使用例 - 実体化したmodelに説明変数を渡すと予測値が戻る - wの初期値はランダムらしい
  • 6. criterion = torch.nn.MSELoss() pred = model(x[0]) loss = criterion(pred, y[0]) print(loss) => tensor(12.4759, grad_fn=<MseLossBackward>) criterion - 損失関数(前回のloss_fn)を定義 - 前回の実装と近いMeanSquadErrorを利用する - 利用方法は以下の通り
  • 7. pred = model(x[0]) loss = criterion(pred, y[0]) loss.backward() print(loss) print(model.linear.weight.grad) => loss: tensor(3.1791, grad_fn=<MseLossBackward>) => grad: tensor([[-3.5660]]) grad - 勾配の算出はcriterionの戻り値をbackward()する - 重み、勾配はモデル内に存在し以下で出力できる - 今回の勾配は以下の通り
  • 8. optimizer - 勾配を重みへ反映する処理 - 今回は確立的勾配降下法を利用 optimizer = torch.optim.SGD(model.parameters(), lr=0.01) pred = model(x[0]) loss = criterion(pred, y[0]) loss.backward() print(model.linear.weight.item(), model.linear.weight.grad.item()) optimizer.step() #=> 勾配を重みに反映 print(model.linear.weight) optimizer.zero_grad() #=> 勾配を0にセット print(model.linear.weight.grad) => 0.9048234224319458 -2.2820169925689697 => tensor([[0.9276]], requires_grad=True) => tensor([[0.]])
  • 9. まとめ import torch x, y = torch.tensor([ [1.], [2.], [3.] ]), torch.tensor([ [2.], [4.], [6.] ]) class Model(torch.nn.Module): def __init__(self): super(Model, self).__init__() self.linear = torch.nn.Linear(1, 1) def forward(self, x): x = self.linear(x) return x model = Model() - 以上を踏まえた実装例(前半)
  • 10. まとめ optimizer = torch.optim.SGD(model.parameters(), lr=0.01) criterion = torch.nn.MSELoss() for epoch in range(300): for _x, _y in zip(x, y): pred = model(_x) loss = criterion(pred, _y) loss.backward() optimizer.step() optimizer.zero_grad() pred = model(torch.tensor([4.])) print(pred) => tensor([7.9167], grad_fn=<AddBackward0>) - 以上を踏まえた実装例(後半)