RecursionError: maximum recursion depth exceededの解決方法について

752 views
Skip to first unread message

Masaki Tanaka

unread,
Oct 10, 2017, 2:42:41 AM10/10/17
to Neural Network Console Users (JP)
こんにちは。

LSTMネットワークの学習時のエラーについてです。
RecursionError: maximum recursion depth exceededと表示されました。
NeuralNetworkConsoleではどのように再起の深さの最大値の制限を設定するのでしょうか。
以下にエラーメッセージがあります。

よろしくお願いします。

------------------------------------------------error message----------------------------------------------------------------------------------------------------------------------------------------------
 
File "C:\Users\akihito\Downloads\neural_network_console_100\libs\nnabla\python\src\nnabla\utils\cli\cli.py", line 170, in <module>
    main()
  File "C:\Users\akihito\Downloads\neural_network_console_100\libs\nnabla\python\src\nnabla\utils\cli\cli.py", line 166, in main
    args.func(args)
  File "C:\Users\akihito\Downloads\neural_network_console_100\libs\nnabla\python\src\nnabla\utils\cli\train.py", line 212, in train_command
    info = load.load(files)
  File "C:\Users\akihito\Downloads\neural_network_console_100\libs\nnabla\python\src\nnabla\utils\load.py", line 592, in load
    proto, default_context, info.networks, info.datasets)
  File "C:\Users\akihito\Downloads\neural_network_console_100\libs\nnabla\python\src\nnabla\utils\load.py", line 443, in _optimizers
    optimizer = _create_optimizer(ctx, o, networks, datasets)
  File "C:\Users\akihito\Downloads\neural_network_console_100\libs\nnabla\python\src\nnabla\utils\load.py", line 349, in _create_optimizer
    optimizer.loss_variables, optimizer.parameter_learning_rate_multipliers)
  File "C:\Users\akihito\Downloads\neural_network_console_100\libs\nnabla\python\src\nnabla\utils\network.py", line 108, in get_backward_sequence
    backward_sequence, loss_variables, variable=p)
  File "C:\Users\akihito\Downloads\neural_network_console_100\libs\nnabla\python\src\nnabla\utils\network.py", line 132, in __backward_recursive
    backward_sequence, loss_variables, function=output_function)
  File "C:\Users\akihito\Downloads\neural_network_console_100\libs\nnabla\python\src\nnabla\utils\network.py", line 132, in __backward_recursive
    backward_sequence, loss_variables, function=output_function)
  File "C:\Users\akihito\Downloads\neural_network_console_100\libs\nnabla\python\src\nnabla\utils\network.py", line 132, in __backward_recursive
    backward_sequence, loss_variables, function=output_function)
  [Previous line repeated 989 more times]
RecursionError: maximum recursion depth exceeded

小林由幸

unread,
Oct 11, 2017, 1:17:52 AM10/11/17
to Neural Network Console Users (JP)
Neural Network Console Version 1.00では、扱えるネットワークの最大の深さは約1000層になります。

この制限を取り払うには、

/libs/nnabla/python/src/nnabla/utils/cli/cli.py

をテキストエディタ等で開き、最後の


if __name__ == '__main__':
    main()

を、

if __name__ == '__main__':
    import thread
    import threading
    thread.stack_size(128 * 1024 * 1024)
    sys.setrecursionlimit(0x3fffffff)
    main_thread = threading.Thread(target=main)
    main_thread.start()
    main_thread.join()

とします。

これにより事実上無制限の深さを扱うことができるようになります。

※Neural Network Librariesの最新masterブランチでは以上の変更は適用済みです
https://github.com/sony/nnabla/pull/43/commits/26cd1d19e295b272c1ea7a6a9255b4515e409df0

小林由幸

unread,
Nov 15, 2017, 5:23:58 AM11/15/17
to Neural Network Console Users (JP)
本日リリースしたNeural Netwok Console - Windows version 1.10にて、1000層を超えるネットワークの学習、評価に対応しましたのでお知らせします。
Reply all
Reply to author
Forward
0 new messages