Python
Windows
Chainer
MNIST

Chainer (Windows) のサンプル mnist がWinError 183 でエラー終了する場合の対応方法。

More than 1 year has passed since last update.


概要

今流行りの、深層学習を始めようとWindowsにPython+Chainerをインストールしてみて、意気揚々とサンプル mnist を実行してみたら、何故かエラー終了して、気勢を削がれがちな方へのカンフル剤です。

詳細な原因解明等はできていませんが、とりあえずエラーをなくして、mnistを実行することができます。

mnistError.png


環境


  • Windows 10 (64bit)

  • Python 3.1.2 on Anaconda 4.1.1

  • chainer 1.11.0


症状

mninst を実行すると epoch の終了後(100%になったタイミングで)必ずエラー発生。

以下のエラーメッセージが吐かれる。

FileExistsError: [WinError 183] 既に存在するファイルを作成することはできません。: '<PATH_TO_CHAINER_INSTALL_DIRECTORY>\chainer\examples\mnist\result\logofw0i659' -> 'result\log'


原因

"log" という名前のファイルが存在しているにもかかわらず、別のファイルをリネームして "log" としようとしたため、エラーが起きた。


対策

上記リネームを行わない。

(本来は上書き保存してほしい‥のでしょうか?)


方法

その一行上のラインのエラーメッセージを参照。

File "C:\Anaconda3\lib\site-packages\chainer\training\extensions\log_report.py", line 94, in __call__

os.rename(path, os.path.join(trainer.out, log_name))

該当ファイル(log_report.py)の該当行数(line 94)をコメントアウトする。


log_report.py

# 下記行をコメントアウト。

#os.rename(path, os.path.join(trainer.out, log_name))

mnistDebug.png

以上でエラー発生しなくなります。

代わりに、ログディレクトリにログファイルが大量に生成されるので、適宜掃除する必要があります。ご注意ください。


余談

mnist の gpu なしでのデフォルトパラメーターででの実行時間測定結果です。参考値として。


環境


  • Surface Pro 3 256GB モデル

  • Windows 10 (64bit)

  • CPU: intel Core-i5-4300U

  • Memory: 8 GB

  • GPU: なし(Intel HD Graphics 4400)

  • バッテリー駆動(省電力ON)


結果

実行時間:20分弱(18分)

(これ、特に実行時間が画面表示とかはされないのですね‥。)