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で簡単なNN作り
Search
betashort
May 09, 2020
0
140
PyTorchで簡単なNN作り
betashort
May 09, 2020
Tweet
Share
More Decks by betashort
See All by betashort
2020研究室勉強会No.0
betashort
0
67
Pythonで解く計量時系列分析1
betashort
0
52
なんでもできるPython-脳機能画像とPython-
betashort
1
140
勉強会を企画したときの資料
betashort
0
21
Featured
See All Featured
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
44
2.2k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Visualization
eitanlees
145
15k
Code Reviewing Like a Champion
maltzj
520
39k
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
Designing on Purpose - Digital PM Summit 2013
jponch
115
7k
Rails Girls Zürich Keynote
gr2m
94
13k
Building Applications with DynamoDB
mza
90
6.1k
Building Your Own Lightsaber
phodgson
103
6.1k
Statistics for Hackers
jakevdp
796
220k
Transcript
PyTorchで簡単なNN作り 勉強会NO1
単純なNNモデルの作り⽅ 1. データの読み込み 2. モデルの定義 3. 学習 4. モデルの評価 5.
(モデルの保存) 6. 推論
ソースコードについて https://github.com/betashort/python/blob/master/NN/PyTorch_NN.ipynb • 下のリンクに今回のソースコードがあります
1. データの読み込み • torch.utils.data.Dataset() • torch.utils.data.DataLoader()
2. モデルの定義 class NNNet(nn.Module): def __init__(self, in_features, num_class=2): super(NNNet, self).__init__()
self.net = nn.Sequential( nn.Linear(5, 3), nn.ReLU(), nn.Linear(3, 2), ) def forward(self, x): out = self.net(x) return out input output forward
3. 学習の⼿順-⽤意するもの- 1. 損失関数(LossFunction) #==== 損失関数の定義 ==== criterion = nn.CrossEntropyLoss()
#==== Optimizerの定義 ==== learning_rate = 0.01 optimizer = torch.optim.Adam( model.parameters(), lr=learning_rate) 2. 最適化アルゴリズム(Optimizer) Loss Function input output correct loss optimize
3. 学習の⼿順-更新- #==== Optimizerの初期化 ==== optimizer.zero_grad() forward backward input output
Loss Function optimize #==== forward processing ==== outputs = model(images) #==== Loss calcuration ==== loss = criterion(outputs, labels) #==== backward processing ==== loss.backward() #==== update optimizer ==== optimizer.step()
4. モデルの評価 l 精度はいいか? l Lossは減少しているか? l 過学習してないか?
5. モデルの保存とロード • 学習が終わったモデルは、再現できるように保存する #====== 保存 ======= torch.save(model.state_dict(), "model.pth") •
学習済みのモデルを、読み込む model = NNNet(64) #====== ロード ======= model.load_state_dict(torch.load("model.pth", map_location=device))
6. 推論 model.eval() with torch.no_grad(): outputs = model.forward(x) input output
forward 重みを固定する
7. 畳み込み層とプーリング層 nn.Conv2d(in_channels = 1, out_channels = 16, kernel_size =
3, stride=1, padding=0) torch.nn.Conv2dで定義
7. 畳み込み層とプーリング層 nn.MaxPool2d(kernel_size=2, stride=2) プーリング層 • MaxPooling • AveragePooling