-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmnist_baseline.py
81 lines (38 loc) · 1.28 KB
/
mnist_baseline.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/usr/bin/env python
# coding: utf-8
# # MNIST Baseline
# In[ ]:
import chainer
# ## load datasets
# In[ ]:
train, test = chainer.datasets.get_mnist(ndim=3, scale=1.0)
# ## make iterators
# In[ ]:
train_iter = chainer.iterators.SerialIterator(train, 128)
test_iter = chainer.iterators.SerialIterator(test, 128, False, False)
# ## create model
# In[ ]:
from models.lenet5 import LeNet5
from chainer import links as L
net = LeNet5()
model = L.Classifier(net)
# ## create optimizer
# In[ ]:
optimizer = chainer.optimizers.MomentumSGD(lr=0.01)
optimizer.setup(model)
optimizer.add_hook(chainer.optimizer_hooks.WeightDecay(5e-4))
# ## create updater
# In[ ]:
updater = chainer.training.StandardUpdater(train_iter, optimizer, device=0)
# ## setting training extensions
# In[ ]:
from utils.cosine_shift import CosineShift
trainer = chainer.training.Trainer(updater, (50, 'epoch'), out='results/tmp')
trainer.extend(chainer.training.extensions.LogReport())
trainer.extend(chainer.training.extensions.Evaluator(test_iter, model, device=0), name='validation')
trainer.extend(chainer.training.extensions.observe_lr())
trainer.extend(CosineShift('lr', 50), trigger=(1, 'iteration'))
# ## training start
# In[ ]:
with chainer.using_config('autotune', True):
trainer.run()