teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

修正

2019/04/28 16:27

投稿

sodiumplus3
sodiumplus3

スコア71

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

修正

2019/04/28 16:27

投稿

sodiumplus3
sodiumplus3

スコア71

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

修正

2019/04/28 16:26

投稿

sodiumplus3
sodiumplus3

スコア71

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.LogReport(trigger=(1,'epoch'),log_name='log'))
68
+ trainer.extend(extensions.PrintReport(['epoch', 'iteration', 'main/loss', 'main/accuracy'])))
69
69
  ```
70
70
  ```
71
71
  trainer.run()

1

追記

2019/04/28 16:25

投稿

sodiumplus3
sodiumplus3

スコア71

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
+ これらをセルを分けて実行すると質問の状況が得られます。