【问题标题】:Running TensorFlow tests in Google Colab在 Google Colab 中运行 TensorFlow 测试
【发布时间】:2019-06-25 03:58:27
【问题描述】:

我想在 Google Colab 上运行测试以确保可重复性,但最后我收到了系统错误,而我的本地计算机上没有。

我在 Google Colab 中设置了 TensorFlow,使用

!pip install tensorflow==1.12.0
import tensorflow as tf
print(tf.__version__)

经过几行安装后,会打印:

1.12.0

然后我想运行一个简单的测试:

import tensorflow as tf

class Tests(tf.test.TestCase):

    def test_gpu(self):
        self.assertEqual(False, tf.test.is_gpu_available())

tf.test.main()

测试在我的本地机器和 Colab 上通过(以及默认会话测试),但之后内核返回系统错误:

..
----------------------------------------------------------------------
Ran 2 tests in 0.005s

OK
An exception has occurred, use %tb to see the full traceback.

SystemExit: False

在调用%tb 之后,我在下面粘贴了一个很长的堆栈跟踪,这几乎没有给出任何指示。我该如何解决?

堆栈跟踪是:

SystemExit                                Traceback (most recent call last)
<ipython-input-20-6a87bf6320f2> in <module>()
      7         self.assertEqual(False, tf.test.is_gpu_available())
      8 
----> 9 tf.test.main()
     10 
     11 

/usr/local/lib/python3.6/dist-packages/tensorflow/python/platform/test.py in main(argv)
     62   """Runs all unit tests."""
     63   _test_util.InstallStackTraceHandler()
---> 64   return _googletest.main(argv)
     65 
     66 

/usr/local/lib/python3.6/dist-packages/tensorflow/python/platform/googletest.py in main(argv)
     98       args = sys.argv
     99     return app.run(main=g_main, argv=args)
--> 100   benchmark.benchmarks_main(true_main=main_wrapper)
    101 
    102 

/usr/local/lib/python3.6/dist-packages/tensorflow/python/platform/benchmark.py in benchmarks_main(true_main, argv)
    342     app.run(lambda _: _run_benchmarks(regex), argv=argv)
    343   else:
--> 344     true_main()

/usr/local/lib/python3.6/dist-packages/tensorflow/python/platform/googletest.py in main_wrapper()
     97     if args is None:
     98       args = sys.argv
---> 99     return app.run(main=g_main, argv=args)
    100   benchmark.benchmarks_main(true_main=main_wrapper)
    101 

/usr/local/lib/python3.6/dist-packages/tensorflow/python/platform/app.py in run(main, argv)
    123   # Call the main function, passing through any arguments
    124   # to the final program.
--> 125   _sys.exit(main(argv))
    126 

/usr/local/lib/python3.6/dist-packages/tensorflow/python/platform/googletest.py in g_main(argv)
     68   if ('TEST_TOTAL_SHARDS' not in os.environ or
     69       'TEST_SHARD_INDEX' not in os.environ):
---> 70     return unittest_main(argv=argv)
     71 
     72   total_shards = int(os.environ['TEST_TOTAL_SHARDS'])

/usr/lib/python3.6/unittest/main.py in __init__(self, module, defaultTest, argv, testRunner, testLoader, exit, verbosity, failfast, catchbreak, buffer, warnings, tb_locals)
     93         self.progName = os.path.basename(argv[0])
     94         self.parseArgs(argv)
---> 95         self.runTests()
     96 
     97     def usageExit(self, msg=None):

/usr/lib/python3.6/unittest/main.py in runTests(self)
    256         self.result = testRunner.run(self.test)
    257         if self.exit:
--> 258             sys.exit(not self.result.wasSuccessful())
    259 
    260 main = TestProgram

SystemExit: False

【问题讨论】:

    标签: tensorflow google-colaboratory


    【解决方案1】:

    您看到的错误来自 unittest 试图退出 python 进程,Jupyter 代表您阻止了该进程。你可以避免这种情况,例如:

    import tensorflow as tf
    class Tests(tf.test.TestCase):
        def test_gpu(self):
            self.assertEqual(False, tf.test.is_gpu_available())
    import unittest
    unittest.main(argv=['first-arg-is-ignored'], exit=False)
    

    (注意最后一行与你的不同,取自https://github.com/jupyter/notebook/issues/2746

    【讨论】:

      猜你喜欢
      • 2019-05-04
      • 2019-12-14
      • 2022-12-14
      • 2020-04-16
      • 2023-03-09
      • 2021-08-20
      • 2020-09-26
      • 2021-05-31
      • 2022-07-28
      相关资源
      最近更新 更多