###trainer.run()だけを実行したい
Chainerで適当な機械学習モデルを組んで、jupyter notebook上で単独セルでtrainer.run()
を実行すると、1回目は問題なく実行されますが、2回目以降そのセルの実行時にRuntimeError: cannot run training loop multiple times
が出てしまいます。毎回Restart & Run allを実行しなければならないのでしょうか?
サンプル置いときます。
import chainer import chainer.functions as F import chainer.links as L import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import load_iris x,t = load_iris(return_X_y=True) x = x.astype('float32') t = t.astype('int32') from sklearn.preprocessing import StandardScaler sc = StandardScaler() sc.fit(x) sc.transform(x) from chainer.datasets import TupleDataset,split_dataset_random dataset = TupleDataset(x,t) n_train = int(len(dataset)*0.7) n_valid = int(len(dataset)*0.2) train,valid_test = split_dataset_random(dataset,n_train,seed=0) valid,test = split_dataset_random(valid_test,n_valid,seed=0) from chainer import iterators batch_size = 5 train_iter = iterators.SerialIterator(train,batch_size) valid_iter = iterators.SerialIterator(valid,batch_size,shuffle=False,repeat=False) class Net(chainer.Chain): def __init__(self,n_mid=10,n_out=3): super(Net,self).__init__() with self.init_scope(): self.l1 = L.Linear(None,n_mid) self.l2 = L.Linear(n_mid,n_mid) self.l3 = L.Linear(n_mid,n_out) def forward(self,x): h = F.relu(self.l1(x)) h = F.relu(self.l2(h)) h = self.l3(h) return h from chainer import optimizers,training predictor = Net() net = L.Classifier(predictor) print(net.predictor) optimizer = optimizers.SGD().setup(net) updater = training.StandardUpdater(train_iter,optimizer,device=-1) from chainer.training.triggers import EarlyStoppingTrigger trainer = training.Trainer(updater,(25,'epoch'),out='results/iris_result') from chainer.training import extensions trainer.extend(extensions.LogReport(trigger=(1,'epoch'),log_name='log')) trainer.extend(extensions.PrintReport(['epoch', 'iteration', 'main/loss', 'main/accuracy'])))
trainer.run()
これらをセルを分けて実行すると質問の状況が得られます。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。