2,771 views
この記事は最終更新から 1791日 が経過しています。
Python用の数値計算ライブラリである theano を使ってみる。
theanoでは、シンボルを使って関数を定義することができ、複雑な処理を簡潔に表現することができる。
ホームページはこちら(↓)
http://deeplearning.net/software/theano/
自分の環境は CentOS 6.5だが、幸運にも上記の公式ホームページにCentOS6用のインストール手順が記してあった!
http://deeplearning.net/software/theano/install_centos6.html#install-centos6
自分の環境にインストールされていないものを、書かれている通りにインストールする。
まずはPyCUDAなるもの、PythonからCUDAを使うためのライブラリをインストールする。
theanoはGPUを使った高速演算の手段としてこれを使うようだ。
$ git clone --recursive http://git.tiker.net/trees/pycuda.git $ ./configure.py --boost-inc-dir=/usr/local/boost/include --boost-lib-dir=/usr/local/boost/lib $ make # sudo make install
次にtheano本体をインストールする。
# easy_install pip # pip install Theano
インストール後の動作確認をしておく。
$ python -c "import theano; theano.test()"
この処理には Intel Xeon X5570x2マシンで 7018.877秒を要した。
テストの結果…
エラーがたくさん発生 (T^T)
====================================================================== ERROR: test_none (theano.compile.tests.test_function_module.T_function) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/theano/compile/tests/test_function_module.py", line 42, in test_none raise KnownFailureTest('See #254: Using None as function output leads to [] return value') KnownFailureTest: See #254: Using None as function output leads to [] return value ====================================================================== ERROR: test002_generator_one_scalar_output (theano.sandbox.scan_module.tests.test_scan.TestScan) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/theano/sandbox/scan_module/tests/test_scan.py", line 474, in test002_generator_one_scalar_output raise KnownFailureTest('Work-in-progress sandbox ScanOp is not fully ' KnownFailureTest: Work-in-progress sandbox ScanOp is not fully functional yet ====================================================================== ERROR: test003_one_sequence_one_output_and_weights (theano.sandbox.scan_module.tests.test_scan.TestScan) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/theano/sandbox/scan_module/tests/test_scan.py", line 512, in test003_one_sequence_one_output_and_weights raise KnownFailureTest('Work-in-progress sandbox ScanOp is not fully ' KnownFailureTest: Work-in-progress sandbox ScanOp is not fully functional yet ====================================================================== ERROR: test_alloc_inputs2 (theano.scan_module.tests.test_scan.T_Scan) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/theano/scan_module/tests/test_scan.py", line 2844, in test_alloc_inputs2 "This tests depends on an optimization for scan " KnownFailureTest: This tests depends on an optimization for scan that has not been implemented yet. ====================================================================== ERROR: test_infershape_seq_shorter_nsteps (theano.scan_module.tests.test_scan.T_Scan) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/theano/scan_module/tests/test_scan.py", line 3040, in test_infershape_seq_shorter_nsteps raise KnownFailureTest('This is a generic problem with infershape' KnownFailureTest: This is a generic problem with infershape that has to be discussed and figured out ====================================================================== ERROR: test_outputs_info_not_typed (theano.scan_module.tests.test_scan.T_Scan) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/numpy-1.8.2-py2.7-linux-x86_64.egg/numpy/testing/decorators.py", line 213, in knownfailer raise KnownFailureTest(msg) KnownFailureTest: This test fails because not typed outputs_info are always gived the smallest dtype. There is no upcast of outputs_info in scan for now. ====================================================================== ERROR: test_arithmetic_cast (theano.tensor.tests.test_basic.test_arithmetic_cast) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/theano/tensor/tests/test_basic.py", line 5583, in test_arithmetic_cast raise KnownFailureTest('Known issue with ' KnownFailureTest: Known issue with numpy >= 1.6.x see #761 ====================================================================== ERROR: test_abs_grad (theano.tensor.tests.test_complex.TestRealImag) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/numpy-1.8.2-py2.7-linux-x86_64.egg/numpy/testing/decorators.py", line 213, in knownfailer raise KnownFailureTest(msg) KnownFailureTest: Complex grads not enabled, see #178 ====================================================================== ERROR: test_complex_grads (theano.tensor.tests.test_complex.TestRealImag) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/numpy-1.8.2-py2.7-linux-x86_64.egg/numpy/testing/decorators.py", line 213, in knownfailer raise KnownFailureTest(msg) KnownFailureTest: Complex grads not enabled, see #178 ====================================================================== ERROR: test_mul_mixed (theano.tensor.tests.test_complex.TestRealImag) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/numpy-1.8.2-py2.7-linux-x86_64.egg/numpy/testing/decorators.py", line 213, in knownfailer raise KnownFailureTest(msg) KnownFailureTest: Complex grads not enabled, see #178 ====================================================================== ERROR: test_mul_mixed0 (theano.tensor.tests.test_complex.TestRealImag) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/numpy-1.8.2-py2.7-linux-x86_64.egg/numpy/testing/decorators.py", line 213, in knownfailer raise KnownFailureTest(msg) KnownFailureTest: Complex grads not enabled, see #178 ====================================================================== ERROR: test_mul_mixed1 (theano.tensor.tests.test_complex.TestRealImag) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/numpy-1.8.2-py2.7-linux-x86_64.egg/numpy/testing/decorators.py", line 213, in knownfailer raise KnownFailureTest(msg) KnownFailureTest: Complex grads not enabled, see #178 ====================================================================== ERROR: test_polar_grads (theano.tensor.tests.test_complex.TestRealImag) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/numpy-1.8.2-py2.7-linux-x86_64.egg/numpy/testing/decorators.py", line 213, in knownfailer raise KnownFailureTest(msg) KnownFailureTest: Complex grads not enabled, see #178 ====================================================================== ERROR: test_gradient (theano.tensor.tests.test_fourier.TestFourier) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/numpy-1.8.2-py2.7-linux-x86_64.egg/numpy/testing/decorators.py", line 213, in knownfailer raise KnownFailureTest(msg) KnownFailureTest: Complex grads not enabled, see #178 ====================================================================== ERROR: theano.tensor.tests.test_opt.test_log_add ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/nose-1.3.4-py2.7.egg/nose/case.py", line 197, in runTest self.test(*self.arg) File "/usr/local/lib/python2.7/site-packages/theano/tensor/tests/test_opt.py", line 1508, in test_log_add raise KnownFailureTest(('log(add(exp)) is not stabilized when adding ' KnownFailureTest: log(add(exp)) is not stabilized when adding more than 2 elements, see #623 ====================================================================== ERROR: Currently Theano enable the constant_folding optimization before stabilization optimization. ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/nose-1.3.4-py2.7.egg/nose/case.py", line 197, in runTest self.test(*self.arg) File "/usr/local/lib/python2.7/site-packages/theano/tensor/tests/test_opt.py", line 3068, in test_constant_get_stabilized "Theano optimizes constant before stabilization. " KnownFailureTest: Theano optimizes constant before stabilization. This breaks stabilization optimization in some cases. See #504. ====================================================================== ERROR: test_dot (theano.tests.test_rop.test_RopLop) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/theano/tests/test_rop.py", line 277, in test_dot self.check_rop_lop(tensor.dot(self.x, W), self.in_shape) File "/usr/local/lib/python2.7/site-packages/theano/tests/test_rop.py", line 191, in check_rop_lop raise KnownFailureTest("Rop doesn't handle non-differentiable " KnownFailureTest: Rop doesn't handle non-differentiable inputs correctly. Bug exposed by fixing Add.grad method. ====================================================================== ERROR: test_elemwise0 (theano.tests.test_rop.test_RopLop) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/theano/tests/test_rop.py", line 280, in test_elemwise0 self.check_rop_lop((self.x + 1) ** 2, self.in_shape) File "/usr/local/lib/python2.7/site-packages/theano/tests/test_rop.py", line 191, in check_rop_lop raise KnownFailureTest("Rop doesn't handle non-differentiable " KnownFailureTest: Rop doesn't handle non-differentiable inputs correctly. Bug exposed by fixing Add.grad method. ====================================================================== FAIL: theano.sandbox.cuda.tests.test_mlp.test_run_nnet ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/nose-1.3.4-py2.7.egg/nose/case.py", line 197, in runTest self.test(*self.arg) File "/usr/local/lib/python2.7/site-packages/theano/sandbox/cuda/tests/test_mlp.py", line 149, in test_run_nnet rel_diff.max(), n_in, n_hid) AssertionError: ('max_abs_diff, max_rel_diff, n_in, n_hid', 0.0036473274, 0.00036355073, 2048, 4096) ---------------------------------------------------------------------- Ran 2802 tests in 7018.877s FAILED (errors=18, failures=1)
以下のtheano-users掲示板のやり取りを見ると、これらのエラーはテストコード側に原因があるので、無視してよいとのこと。
https://groups.google.com/forum/#!topic/theano-users/1SPWQZEW-jI
https://groups.google.com/forum/#!topic/theano-users/t0MIiyv3ibQ
memo
これから拝見して勉強させていただきたいサイトをメモしておく。
http://qiita.com/mokemokechicken/items/3fbf6af714c1f66f99e9
http://www.chino-js.com/ja/tech/theano-rbm/