13

マシンにTheanoをインストールしましたが、Numpy/Fortran 関連のエラー メッセージでノーズテストが中断されます。私にとって、Numpy は Theano とは異なる Fortran バージョンでコンパイルされたようです。すでに Theano ( sudo pip uninstall theano+ sudo pip install --upgrade --no-deps theano) と Numpy / Scipy ( apt-get install --reinstall python-numpy python-scipy) を再インストールしましたが、これは役に立ちませんでした。

どのような手順をお勧めしますか?

完全なエラー メッセージ:

ImportError: ('/home/Nick/.theano/compiledir_Linux-2.6.35-31-generic-x86_64-with-Ubuntu-10.10-maverick--2.6.6/tmpIhWJaI/0c99c52c82f7ddc775109a06ca04b360.so: undefined symbol: _gfortran_st_write_done'

私の研究:

エラーに関するSciPy / BuildingGeneralのインストールページ:undefined symbol: _gfortran_st_write_done'

エラーメッセージが表示される場合

ImportError: /usr/lib/atlas/libblas.so.3gf: undefined symbol: _gfortran_st_write_done

SciPy をビルドするとき、NumPy がビルド中に間違った Fortran コンパイラを選択したことを意味します (例: ifort)。

以下を使用して NumPy を再コンパイルします。

python setup.py build --fcompiler=gnu95

または適切な方 (​​ を参照python setup.py build --help-fcompiler)。

しかし:

Nick@some-serv2:/usr/local/lib/python2.6/dist-packages/numpy$ python setup.py build --help-fcompiler
This is the wrong setup.py file to run

使用したソフトウェアのバージョン:

  • scipy 0.10.1 (scipy.test() は動作します)
  • NumPy 1.6.2 (numpy.test() は動作します)
  • theano 0.5.0 (いくつかのテストは で失敗しますundefined symbol: _gfortran_st_write_done')
  • パイソン2.6.6
  • Ubuntu 10.10

[アップデート]

apt-get removeそこで、残されたものを使用してシステムから numpy と scipy を削除しましfind -name XXX -deleteた。

を使用して、github ソースから numpy と scipy をインストールしましたsudo python setpy.py install

その後、私は再び入りましsudo pip uninstall theanosudo pip install --upgrade --no-deps theano

エラーが続く:/

apt-get source... +アプローチも試してみましたapt-get build-dep ...が、私の古い Ubuntu (10.10) では、theano 用の古いバージョンの numpy と scipy がインストールされます。ValueError: numpy >= 1.4 is required (detected 1.3.0 from /usr/local/lib/python2.6/dist-packages/numpy/__init__.pyc)

4

4 に答える 4

11

私は同じ問題を抱えていました.ソースコードを確認した後、user212658の答えはうまくいくように見えました(私は試していません)。次に、ソース コードを変更せずに user212658 のハックを展開する方法を探しました。

これらの行をtheanorcファイルに追加します。

[blas]
ldflags = -lblas -lgfortran

これは私にとってはうまくいきました。

于 2013-08-14T17:48:02.127 に答える
2

ソースからNumPyを再コンパイルしようとしましたか?

私はUbuntuパッケージシステムに精通していないので、あなたの中に何が入っているのか確認できませんdist-packages/numpy。ソースのクリーンなアーカイブを使用すると、ディレクトリと同じレベルにあるNumPy必要があります。それがあなたがに使用したいものだと私はかなり確信しています。setup.pynumpytoolsbenchmarkspython setup.py build

[編集]

numpy適切なオプションを使用して再コンパイルしたので、おそらく、、またはに依存せずにソースから直接コンパイルすることで--fcompiler同じことを試みることができます。そうすることで、ビルドプロセスをより適切に制御できるようになります。これにより、デバッグや解決策の検索が容易になります。Theanoapt-getpip

于 2012-08-27T13:06:16.947 に答える
1

私も同じ問題を抱えていました。私が見つけた解決策は、theano / gof / cmodule.pyにハックを追加して、「blas」がライブラリにある場合は常にgfortranに対してリンクすることです。それはそれを修正しました。

class GCC_compiler(object):
   ...
    @staticmethod
    def compile_str(module_name, src_code, location=None,
                    include_dirs=None, lib_dirs=None, libs=None,
                    preargs=None):
        ...
        cmd.extend(['-l%s' % l for l in libs])
        if 'blas' in libs:
            cmd.append('-lgfortran')
于 2012-11-27T07:34:10.480 に答える
0

より良い修正は、atlas を削除して openblas をインストールすることです。openblas は atlas よりも高速です。また、openblas は gfortran を要求せず、numpy がリンクされたものです。したがって、そのままで機能します。

于 2013-08-14T20:03:51.183 に答える