def init(config_filename, log_verbosity, remaining_args=()): """ :param str config_filename: filename to config-file :param int log_verbosity: :param list[str] remaining_args: """ rnn.init_better_exchook() rnn.init_thread_join_hack() print("Using config file %r." % config_filename) assert os.path.exists(config_filename) rnn.init_config(config_filename=config_filename, command_line_options=remaining_args, extra_updates={ "use_tensorflow": True, "log": None, "log_verbosity": log_verbosity, "task": "search", }, default_config={ "debug_print_layer_output_template": True, }) global config config = rnn.config rnn.init_log() print("Returnn %s starting up." % os.path.basename(__file__), file=log.v1) rnn.returnn_greeting() rnn.init_backend_engine() assert util.BackendEngine.is_tensorflow_selected( ), "this is only for TensorFlow" rnn.init_faulthandler() better_exchook.replace_traceback_format_tb() # makes some debugging easier rnn.init_config_json_network()
def setup(): """ Calls necessary setups. """ # Disable extensive TF debug verbosity. Must come before the first TF import. import logging logging.getLogger('tensorflow').disabled = True # os.environ['TF_CPP_MIN_LOG_LEVEL'] = '0' # logging.getLogger("tensorflow").setLevel(logging.INFO) # Get us some further useful debug messages (in some cases, e.g. CUDA). # For example: https://github.com/tensorflow/tensorflow/issues/24496 # os.environ["CUDNN_LOGINFO_DBG"] = "1" # os.environ["CUDNN_LOGDEST_DBG"] = "stdout" # The following might fix (workaround): Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR # (https://github.com/tensorflow/tensorflow/issues/24496). # os.environ["TF_FORCE_GPU_ALLOW_GROWTH"] = "true" import _setup_returnn_env # noqa import returnn.util.basic as util util.init_thread_join_hack() from returnn.util import better_exchook better_exchook.install() better_exchook.replace_traceback_format_tb() from returnn.log import log log.initialize(verbosity=[5]) # TF is optional. # Note that importing TF still has a small side effect: # BackendEngine._get_default_engine() will return TF by default, if TF is already loaded. # For most tests, this does not matter. try: import tensorflow as tf except ImportError: tf = None if tf: import returnn.tf.util.basic as tf_util tf_util.debug_register_better_repr() import returnn.util.debug as debug debug.install_lib_sig_segfault() try: import faulthandler # Enable after libSigSegfault, so that we have both, # because faulthandler will also call the original sig handler. faulthandler.enable() except ImportError: print("no faulthandler")
# -*- coding: utf8 -*- import sys import os my_dir = os.path.dirname(os.path.realpath(__file__)) import _setup_test_env # noqa from nose.tools import assert_equal, assert_not_equal, assert_raises, assert_true, assert_is from numpy.testing.utils import assert_almost_equal from returnn.util.basic import * import numpy as np import numpy import unittest from returnn.util import better_exchook better_exchook.replace_traceback_format_tb() def test_cmd_true(): r = sys_cmd_out_lines("true") assert_equal(r, []) def test_cmd_false(): assert_raises(CalledProcessError, lambda: sys_cmd_out_lines("false")) def test_cmd_stdout(): r = sys_cmd_out_lines("echo 1; echo 2;") assert_equal(r, ["1", "2"])