質問編集履歴
4
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -28,12 +28,7 @@
|
|
28
28
|
train,valid_test = split_dataset_random(dataset,n_train,seed=0)
|
29
29
|
valid,test = split_dataset_random(valid_test,n_valid,seed=0)
|
30
30
|
|
31
|
-
c = np.zeros(3)
|
32
|
-
for i in range(n_train):
|
33
|
-
c[int(train[i][1])] += 1
|
34
31
|
|
35
|
-
print(c)
|
36
|
-
|
37
32
|
from chainer import iterators
|
38
33
|
batch_size = 5
|
39
34
|
train_iter = iterators.SerialIterator(train,batch_size)
|
3
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -65,6 +65,7 @@
|
|
65
65
|
trainer = training.Trainer(updater,(25,'epoch'),out='results/iris_result')
|
66
66
|
|
67
67
|
from chainer.training import extensions
|
68
|
+
trainer.extend(extensions.LogReport(trigger=(1,'epoch'),log_name='log'))
|
68
69
|
trainer.extend(extensions.PrintReport(['epoch', 'iteration', 'main/loss', 'main/accuracy'])))
|
69
70
|
```
|
70
71
|
```
|
2
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -65,7 +65,7 @@
|
|
65
65
|
trainer = training.Trainer(updater,(25,'epoch'),out='results/iris_result')
|
66
66
|
|
67
67
|
from chainer.training import extensions
|
68
|
-
trainer.extend(extensions.
|
68
|
+
trainer.extend(extensions.PrintReport(['epoch', 'iteration', 'main/loss', 'main/accuracy'])))
|
69
69
|
```
|
70
70
|
```
|
71
71
|
trainer.run()
|
1
追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,3 +1,73 @@
|
|
1
1
|
###trainer.run()だけを実行したい
|
2
2
|
|
3
|
-
Chainerで適当な機械学習モデルを組んで、jupyter notebook上で単独セルで`trainer.run()`を実行すると、1回目は問題なく実行されますが、2回目以降そのセルの実行時に`RuntimeError: cannot run training loop multiple times`が出てしまいます。毎回Restart & Run allを実行しなければならないのでしょうか?
|
3
|
+
Chainerで適当な機械学習モデルを組んで、jupyter notebook上で単独セルで`trainer.run()`を実行すると、1回目は問題なく実行されますが、2回目以降そのセルの実行時に`RuntimeError: cannot run training loop multiple times`が出てしまいます。毎回Restart & Run allを実行しなければならないのでしょうか?
|
4
|
+
|
5
|
+
サンプル置いときます。
|
6
|
+
```
|
7
|
+
import chainer
|
8
|
+
import chainer.functions as F
|
9
|
+
import chainer.links as L
|
10
|
+
import numpy as np
|
11
|
+
import matplotlib.pyplot as plt
|
12
|
+
|
13
|
+
from sklearn.datasets import load_iris
|
14
|
+
x,t = load_iris(return_X_y=True)
|
15
|
+
x = x.astype('float32')
|
16
|
+
t = t.astype('int32')
|
17
|
+
|
18
|
+
from sklearn.preprocessing import StandardScaler
|
19
|
+
sc = StandardScaler()
|
20
|
+
sc.fit(x)
|
21
|
+
sc.transform(x)
|
22
|
+
|
23
|
+
from chainer.datasets import TupleDataset,split_dataset_random
|
24
|
+
dataset = TupleDataset(x,t)
|
25
|
+
n_train = int(len(dataset)*0.7)
|
26
|
+
n_valid = int(len(dataset)*0.2)
|
27
|
+
|
28
|
+
train,valid_test = split_dataset_random(dataset,n_train,seed=0)
|
29
|
+
valid,test = split_dataset_random(valid_test,n_valid,seed=0)
|
30
|
+
|
31
|
+
c = np.zeros(3)
|
32
|
+
for i in range(n_train):
|
33
|
+
c[int(train[i][1])] += 1
|
34
|
+
|
35
|
+
print(c)
|
36
|
+
|
37
|
+
from chainer import iterators
|
38
|
+
batch_size = 5
|
39
|
+
train_iter = iterators.SerialIterator(train,batch_size)
|
40
|
+
valid_iter = iterators.SerialIterator(valid,batch_size,shuffle=False,repeat=False)
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
class Net(chainer.Chain):
|
45
|
+
def __init__(self,n_mid=10,n_out=3):
|
46
|
+
super(Net,self).__init__()
|
47
|
+
with self.init_scope():
|
48
|
+
self.l1 = L.Linear(None,n_mid)
|
49
|
+
self.l2 = L.Linear(n_mid,n_mid)
|
50
|
+
self.l3 = L.Linear(n_mid,n_out)
|
51
|
+
|
52
|
+
def forward(self,x):
|
53
|
+
h = F.relu(self.l1(x))
|
54
|
+
h = F.relu(self.l2(h))
|
55
|
+
h = self.l3(h)
|
56
|
+
return h
|
57
|
+
|
58
|
+
from chainer import optimizers,training
|
59
|
+
predictor = Net()
|
60
|
+
net = L.Classifier(predictor)
|
61
|
+
print(net.predictor)
|
62
|
+
optimizer = optimizers.SGD().setup(net)
|
63
|
+
updater = training.StandardUpdater(train_iter,optimizer,device=-1)
|
64
|
+
from chainer.training.triggers import EarlyStoppingTrigger
|
65
|
+
trainer = training.Trainer(updater,(25,'epoch'),out='results/iris_result')
|
66
|
+
|
67
|
+
from chainer.training import extensions
|
68
|
+
trainer.extend(extensions.LogReport(trigger=(1,'epoch'),log_name='log'))
|
69
|
+
```
|
70
|
+
```
|
71
|
+
trainer.run()
|
72
|
+
```
|
73
|
+
これらをセルを分けて実行すると質問の状況が得られます。
|