为什么我会收到"_curses.error:cbreak()返回ERR"的信息?使用TensorFlow CLI调试器时 [英] Why do I get "_curses.error: cbreak() returned ERR" when using TensorFlow CLI Debugger?

查看:425
本文介绍了为什么我会收到"_curses.error:cbreak()返回ERR"的信息?使用TensorFlow CLI调试器时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用TensorFlow CLI调试器来识别在网络训练期间导致NaN的操作,但是当我尝试运行代码时,我得到了一个错误:

I am trying to use the TensorFlow CLI debugger in order to identify the operation which is causing a NaN during training of a network, but when I try to run the code I get an error:

_curses.error: cbreak() returned ERR

我正在通过SSH连接到的Ubuntu服务器上运行代码,并尝试遵循

I'm running the code on an Ubuntu server, which I'm connecting to via SSH, and have tried to follow this tutorial.

我尝试使用tf.add_check_numerics_ops(),但是网络中的层包括while循环,因此不兼容.这是发生错误的代码部分:

I have tried using tf.add_check_numerics_ops(), but the layers in the network include while loops so are not compatible. This is the section of code where the error is being raised:

import tensorflow as tf
from tensorflow.python import debug as tf_debug
...
#Prepare data
train_data, val_data, test_data = dataset.prepare_datasets(model_config)

sess = tf.Session()
sess = tf_debug.LocalCLIDebugWrapperSession(sess)

# Create iterators
handle = tf.placeholder(tf.string, shape=[])
iterator = tf.data.Iterator.from_string_handle(handle, train_data.output_types, train_data.output_shapes)
mixed_spec, voice_spec, mixed_audio, voice_audio = iterator.get_next()

training_iterator = train_data.make_initializable_iterator()
validation_iterator = val_data.make_initializable_iterator()
testing_iterator = test_data.make_initializable_iterator()

training_handle = sess.run(training_iterator.string_handle())
...

,完整的错误是:

Traceback (most recent call last):
  File "main.py", line 64, in <module>
    @ex.automain
  File "/home/enterprise.internal.city.ac.uk/acvn728/.local/lib/python3.5/site-packages/sacred/experiment.py", line 137, in automain
    self.run_commandline()
  File "/home/enterprise.internal.city.ac.uk/acvn728/.local/lib/python3.5/site-packages/sacred/experiment.py", line 260, in run_commandline
    return self.run(cmd_name, config_updates, named_configs, {}, args)
  File "/home/enterprise.internal.city.ac.uk/acvn728/.local/lib/python3.5/site-packages/sacred/experiment.py", line 209, in run
    run()
  File "/home/enterprise.internal.city.ac.uk/acvn728/.local/lib/python3.5/site-packages/sacred/run.py", line 221, in __call__
    self.result = self.main_function(*args)
  File "/home/enterprise.internal.city.ac.uk/acvn728/.local/lib/python3.5/site-packages/sacred/config/captured_function.py", line 46, in captured_function
    result = wrapped(*args, **kwargs)
  File "main.py", line 95, in do_experiment
    training_handle = sess.run(training_iterator.string_handle())
  File "/home/enterprise.internal.city.ac.uk/acvn728/.local/lib/python3.5/site-packages/tensorflow/python/debug/wrappers/framework.py", line 455, in run
    is_callable_runner=bool(callable_runner)))
  File "/home/enterprise.internal.city.ac.uk/acvn728/.local/lib/python3.5/site-packages/tensorflow/python/debug/wrappers/local_cli_wrapper.py", line 255, in on_run_start
    self._run_start_response = self._launch_cli()
  File "/home/enterprise.internal.city.ac.uk/acvn728/.local/lib/python3.5/site-packages/tensorflow/python/debug/wrappers/local_cli_wrapper.py", line 431, in _launch_cli
    title_color=self._title_color)
  File "/home/enterprise.internal.city.ac.uk/acvn728/.local/lib/python3.5/site-packages/tensorflow/python/debug/cli/curses_ui.py", line 492, in run_ui
    self._screen_launch(enable_mouse_on_start=enable_mouse_on_start)
  File "/home/enterprise.internal.city.ac.uk/acvn728/.local/lib/python3.5/site-packages/tensorflow/python/debug/cli/curses_ui.py", line 445, in _screen_launch
    curses.cbreak()
_curses.error: cbreak() returned ERR

我对使用Ubuntu(和TensorFlow)还很陌生,但据我所知,服务器确实已安装ncurses,这应该允许使用基于curses的必需界面:

I'm pretty new to using Ubuntu (and TensorFlow), but as far as I can tell the server does have ncurses installed, which should allow the required curses based interface:

acvn728@america:~/MScFinalProject$ dpkg -l '*ncurses*' | grep '^ii'
ii  libncurses5:amd64  6.0+20160213-1ubuntu1 amd64        shared libraries for terminal handling
ii  libncursesw5:amd64 6.0+20160213-1ubuntu1 amd64        shared libraries for terminal handling (wide character support)
ii  ncurses-base       6.0+20160213-1ubuntu1 all          basic terminal type definitions
ii  ncurses-bin        6.0+20160213-1ubuntu1 amd64        terminal-related programs and man pages
ii  ncurses-term       6.0+20160213-1ubuntu1 all          additional terminal type definitions

推荐答案

问题已解决!解决的办法就是改变

Problem solved! The solution was to change

sess = tf_debug.LocalCLIDebugWrapperSession(sess)

sess = tf_debug.LocalCLIDebugWrapperSession(sess, ui_type="readline")

这类似于

This is similar to the solution to this question, but I I think it is important to note that they are different because a) it refers to a different function and a different API and b) I wasn't trying to run from an IDE, as mentioned in that solution.

这篇关于为什么我会收到"_curses.error:cbreak()返回ERR"的信息?使用TensorFlow CLI调试器时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆