前提・実現したいこと
こちらのサイトにあるchainerによるMNISTの認識を行いたいと考えてます.
【Chainer入門】Trainerで訓練コードを書いてみよう!
そのままコピペでは動いたのですがdropoutを追加して動かしてみると下記のようなエラーが発生して困っています.
発生している問題・エラーメッセージ
C:\ProgramData\Anaconda3\envs\py3.6\lib\site-packages\h5py\__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`. from ._conv import register_converters as _register_converters epoch main/loss main/accuracy validation/main/loss validation/main/accuracy elapsed_time 1 0.942897 0.692114 0.534543 0.83574 3.5464 2 0.476107 0.860125 0.405937 0.876978 7.41841 3 0.390607 0.885994 0.352789 0.896855 11.2491 4 0.34565 0.899606 0.338131 0.902789 15.2071 5 0.30767 0.910048 0.299878 0.908623 19.2382 Exception in main training loop: [WinError 5] アクセスが拒否されました。: 'result\logumjwajtr\log.json' Traceback (most recent call last): File "C:\ProgramData\Anaconda3\envs\py3.6\lib\site-packages\chainer\training\trainer.py", line 309, in run entry.extension(self) File "C:\ProgramData\Anaconda3\envs\py3.6\lib\site-packages\chainer\training\extensions\log_report.py", line 105, in __call__ shutil.move(path, new_path) File "C:\ProgramData\Anaconda3\envs\py3.6\lib\contextlib.py", line 88, in __exit__ next(self.gen) File "C:\ProgramData\Anaconda3\envs\py3.6\lib\site-packages\chainer\utils\__init__.py", line 52, in tempdir shutil.rmtree(temp_dir, ignore_errors=ignore_errors) File "C:\ProgramData\Anaconda3\envs\py3.6\lib\shutil.py", line 494, in rmtree return _rmtree_unsafe(path, onerror) File "C:\ProgramData\Anaconda3\envs\py3.6\lib\shutil.py", line 389, in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info()) File "C:\ProgramData\Anaconda3\envs\py3.6\lib\shutil.py", line 387, in _rmtree_unsafe os.unlink(fullname) Will finalize trainer extensions and updater before reraising the exception. Traceback (most recent call last): File "sample0.py", line 84, in <module> trainer.run() File "C:\ProgramData\Anaconda3\envs\py3.6\lib\site-packages\chainer\training\trainer.py", line 320, in run six.reraise(*sys.exc_info()) File "C:\ProgramData\Anaconda3\envs\py3.6\lib\site-packages\six.py", line 693, in reraise raise value File "C:\ProgramData\Anaconda3\envs\py3.6\lib\site-packages\chainer\training\trainer.py", line 309, in run entry.extension(self) File "C:\ProgramData\Anaconda3\envs\py3.6\lib\site-packages\chainer\training\extensions\log_report.py", line 105, in __call__ shutil.move(path, new_path) File "C:\ProgramData\Anaconda3\envs\py3.6\lib\contextlib.py", line 88, in __exit__ next(self.gen) File "C:\ProgramData\Anaconda3\envs\py3.6\lib\site-packages\chainer\utils\__init__.py", line 52, in tempdir shutil.rmtree(temp_dir, ignore_errors=ignore_errors) File "C:\ProgramData\Anaconda3\envs\py3.6\lib\shutil.py", line 494, in rmtree return _rmtree_unsafe(path, onerror) File "C:\ProgramData\Anaconda3\envs\py3.6\lib\shutil.py", line 389, in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info()) File "C:\ProgramData\Anaconda3\envs\py3.6\lib\shutil.py", line 387, in _rmtree_unsafe os.unlink(fullname) PermissionError: [WinError 5] アクセスが拒否されました。: 'result\logumjwajtr\log.json'
該当のソースコード
python
1# cite from https://www.sejuku.net/blog/48977 2 3import numpy as np 4import chainer 5from chainer.backends import cuda 6from chainer import Function, gradient_check, report, training, utils, Variable 7from chainer import datasets, iterators, optimizers, serializers 8from chainer import Link, Chain, ChainList 9import chainer.functions as F 10import chainer.links as L 11from chainer.training import extensions 12from chainer.datasets import mnist 13from chainer.training import extensions 14 15class MLP(Chain): 16 17 def __init__(self, n_mid_units=100, n_out=10): 18 super(MLP, self).__init__() 19 with self.init_scope(): 20 self.l1 = L.Linear(None, n_mid_units) 21 self.l2 = L.Linear(None, n_mid_units) 22 self.l3 = L.Linear(None, n_out) 23 24 self.dr = 0.5 25 26 def set_dropout_r(self, _dr): 27 self.dr = _dr 28 29 def __call__(self, x): 30 with chainer.using_config('train', True): 31 # h1 = F.relu(self.l1(x)) 32 # h2 = F.relu(self.l2(h1)) 33 h1 = F.dropout(F.relu(self.l1(x)), ratio=self.dr) 34 h2 = F.dropout(F.relu(self.l2(h1)), ratio=self.dr) 35 return self.l3(h2) 36 37train, test = mnist.get_mnist() 38 39minibatchsize = 128 40train_iter = iterators.SerialIterator(train, minibatchsize) 41test_iter = iterators.SerialIterator(test, minibatchsize, False, False) 42 43mlp = MLP() 44 45# Classifierでmodelをラップすることで、modelに損失の計算プロセスを追加します。 46# 引数に損失関数を指定しない場合は、softmax_cross_entropyを使います。 47model = L.Classifier(mlp) 48 49# GPUが使える場合は、gpu_idに0を代入します。ない場合は-1とします。 50gpu_id=-1 51if gpu_id >= 0: 52 model.to_gpu(gpu_id) 53 54# choose optimizer 55optimizer = optimizers.MomentumSGD() 56 57# set model to optimizer 58optimizer.setup(model) 59 60# Iteratorとoptimizerを使うupdaterを作る 61updater = training.updaters.StandardUpdater(train_iter, optimizer, device=gpu_id) 62 63# 学習する回数を決める 64max_epoch = 30 65 66# Trainerの用意.updaterを渡すことで使える. 67trainer = training.Trainer(updater, (max_epoch, 'epoch'), out='result') 68 69# ログファイルを保存する機能を追加 70# トレーニング情報を定期的に端末に表示する機能 71trainer.extend(extensions.LogReport()) 72# 定期的に状態をシリアライズ(保存)する機能 73# trainer.extend(extensions.snapshot(filename='snapshot_epoch-{.updater.epoch}')) 74# trainer.extend(extensions.snapshot_object(model.predictor, filename='model_epoch-{.updater.epoch}')) 75# テストデータを使ってモデルの評価を行う機能 76trainer.extend(extensions.Evaluator(test_iter, model, device=gpu_id)) 77trainer.extend(extensions.PrintReport(['epoch', 'main/loss', 'main/accuracy', 'validation/main/loss', 'validation/main/accuracy', 'elapsed_time'])) 78# 損失関数の値をグラフにする機能 79trainer.extend(extensions.PlotReport(['main/loss', 'validation/main/loss'], x_key='epoch', file_name='loss.png')) 80# 正答率をグラフにする機能 81trainer.extend(extensions.PlotReport(['main/accuracy', 'validation/main/accuracy'], x_key='epoch', file_name='accuracy.png')) 82trainer.extend(extensions.dump_graph('main/loss')) 83 84trainer.run()
試したこと
さまざまなサイトを参考にしながらいろいろ試してはみたのですがどれも解決には至りませんでした.
アクセス権の設定変更
管理者権限での実行
あと,リンクがどこにいったのかわからなくなって申し訳ないのですが「仮想環境を作って実行する」というのも試しましたが同じ問題が発生しました.
補足情報(FW/ツールのバージョンなど)
OS windows10
python 3.6
chainer ver4.2.0
どうぞよろしくお願いします.
あなたの回答
tips
プレビュー