【问题标题】:Installing Theano on Windows - DLL load failed在 Windows 上安装 Theano - DLL 加载失败
【发布时间】:2015-12-29 09:45:57
【问题描述】:

我正在尝试在 Windwos 8 上安装 Theano

已遵循these 的步骤。

我尝试使用:

import numpy as np
import time
import theano

print('blas.ldflags=', theano.config.blas.ldflags)
A = np.random.rand(1000, 10000).astype(theano.config.floatX)
B = np.random.rand(10000, 1000).astype(theano.config.floatX)
np_start = time.time()
AB = A.dot(B)
np_end = time.time()
X, Y = theano.tensor.matrices('XY')
mf = theano.function([X, Y], X.dot(Y))
t_start = time.time()
tAB = mf(A, B)
t_end = time.time()
print("NP time: %f[s], theano time: %f[s] (times should be close when run on CPU!)" % (
np_end - np_start, t_end - t_start))
print("Result difference: %f" % (np.abs(AB - tAB).max(), ))

我知道脚本是 numpy 和 theano 计算时间之间的比较。

但不知何故,找不到某些 dll。请找到以下日志:

[Py341] C:\>python ML\Deep\TheanoSetupTesting.py
blas.ldflags= -LE:\Things_Installed_Here\Theano\openblas -lopenblas
Traceback (most recent call last):
  File "ML\Deep\TheanoSetupTesting.py", line 12, in <module>
    mf = theano.function([X, Y], X.dot(Y))
  File "E:\Things_Installed_Here\Anaconda_Py\envs\Py341\lib\site-packages\theano-0.7.0-py3.4.egg\theano\compile\function.py", line 317, in function
    output_keys=output_keys)
  File "E:\Things_Installed_Here\Anaconda_Py\envs\Py341\lib\site-packages\theano-0.7.0-py3.4.egg\theano\compile\pfunc.py", line 526, in pfunc
    output_keys=output_keys)
  File "E:\Things_Installed_Here\Anaconda_Py\envs\Py341\lib\site-packages\theano-0.7.0-py3.4.egg\theano\compile\function_module.py", line 1778, in orig_function

    defaults)
  File "E:\Things_Installed_Here\Anaconda_Py\envs\Py341\lib\site-packages\theano-0.7.0-py3.4.egg\theano\compile\function_module.py", line 1642, in create input_storage=input_storage_lists, storage_map=storage_map)
  File "E:\Things_Installed_Here\Anaconda_Py\envs\Py341\lib\site-packages\theano-0.7.0-py3.4.egg\theano\gof\link.py", line 690, in make_thunk
    storage_map=storage_map)[:3]
  File "E:\Things_Installed_Here\Anaconda_Py\envs\Py341\lib\site-packages\theano-0.7.0-py3.4.egg\theano\gof\vm.py", line 1037, in make_all
    no_recycling))
  File "E:\Things_Installed_Here\Anaconda_Py\envs\Py341\lib\site-packages\theano-0.7.0-py3.4.egg\theano\gof\op.py", line 932, in make_thunk
    no_recycling)
  File "E:\Things_Installed_Here\Anaconda_Py\envs\Py341\lib\site-packages\theano-0.7.0-py3.4.egg\theano\gof\op.py", line 850, in make_c_thunk
    output_storage=node_output_storage)
  File "E:\Things_Installed_Here\Anaconda_Py\envs\Py341\lib\site-packages\theano-0.7.0-py3.4.egg\theano\gof\cc.py", line 1207, in make_thunk
    keep_lock=keep_lock)
  File "E:\Things_Installed_Here\Anaconda_Py\envs\Py341\lib\site-packages\theano-0.7.0-py3.4.egg\theano\gof\cc.py", line 1152, in __compile__
    keep_lock=keep_lock)
  File "E:\Things_Installed_Here\Anaconda_Py\envs\Py341\lib\site-packages\theano-0.7.0-py3.4.egg\theano\gof\cc.py", line 1602, in cthunk_factory
    key=key, lnk=self, keep_lock=keep_lock)
  File "E:\Things_Installed_Here\Anaconda_Py\envs\Py341\lib\site-packages\theano-0.7.0-py3.4.egg\theano\gof\cmodule.py", line 1174, in module_from_key  module = lnk.compile_cmodule(location)
  File "E:\Things_Installed_Here\Anaconda_Py\envs\Py341\lib\site-packages\theano-0.7.0-py3.4.egg\theano\gof\cc.py", line 1513, in compile_cmodule
    preargs=preargs)
  File "E:\Things_Installed_Here\Anaconda_Py\envs\Py341\lib\site-packages\theano-0.7.0-py3.4.egg\theano\gof\cmodule.py", line 2196, in compile_str
    return dlimport(lib_filename)
  File "E:\Things_Installed_Here\Anaconda_Py\envs\Py341\lib\site-packages\theano-0.7.0-py3.4.egg\theano\gof\cmodule.py", line 331, in dlimport
    rval = __import__(module_name, {}, {}, [module_name])
ImportError: DLL load failed: The specified module could not be found.

作为python世界的新手,我无法找出未找到哪个Dll。如果丢失,我会安装它,并将路径添加到系统路径变量中。但是我怎么知道它是哪个dll。我尝试使用pdb 并在cmodule.py 的各个位置设置断点,但没有一个被击中。

  1. 您是否熟悉此类错误及其解决方法?
  2. 否则,请帮我找到丢失的 dll 名称,剩下的事情我来做。
  3. 我不介意在安装theano 时走一条完全不同的路。我遇到了一些建议微软编译器工作得很好的帖子。但是自从过去 14 小时以来,我已经连续遇到一个问题,并且想要一种有效的方法。最终我想在我的系统上使用theano

顺便说一句,没有CUDA。我只在 CPU 上尝试。

【问题讨论】:

  • 您好。在这里遇到同样的问题。真的,Windows 64bit 上的 theano 是一场灾难。一个问题接踵而至,如果您的部门只是不使用/允许 linux,还有什么选择?

标签: python dll installation theano pdb


【解决方案1】:

这可能有点晚了。我按照与您完全相同的指南进行操作,但遇到了同样的错误。

原来可以通过将openblas目录添加到系统路径来修复它。在您的示例中,将“E:\Things_Installed_Here\Theano\openblas”添加到系统路径变量。

请注意,根据您放置 DLL 文件的位置,您需要添加“E:\Things_Installed_Here\Theano\openblas”或“E:\Things_Installed_Here\Theano\openblas\bin”。

Windows 10 64 位、Python 3.5.1 (Anaconda 2.5)、Theano 0.8.2。

对于那些需要它的人,感谢这三个指南guide1guide2 和 OP 随附的指南,我能够在 Windows 10 中安装 Theano。

【讨论】:

  • 不幸的是,我无法测试它,我正在享受linux 的世界。对于这个工作的人,将其添加到 cmets 中,一段时间后,这可能会成为工作解决方案
【解决方案2】:

好的,我终于找到了至少我使用WinPython、python3.5.1.1、Win 7 64bit和mingw64安装的原因:

在 .theanorc[.txt] 文件中,我哈,在安装 blas 后,有一个节 [blas],其中包含 openblas 包含路径的一行。我删除了该行并将 [blas] 下面的区域留空。重新启动 WinPython/Spider,打开一个新的控制台,它工作了。

之后使用 Theano 从 Lasagne 运行 mnist.py 进行测试。

【讨论】:

  • 我已经这样做了,但它对我不起作用。我已经向它投降并转向了 linux - 事情进展得很快:P。感谢您的努力。
【解决方案3】:

我也在努力让 theano 在 Windows 10 x64 上工作,在阅读了几份帮助指南之后,最终对我有用的是:

  1. 安装 Intel Distribution for Python(确保 c:\intelpython27\ 和 c:\intelpython27\scripts 在 PATH 中)
  2. 打开命令行并执行:conda install mingw libpython
  3. 然后执行:pip install theano
  4. http://sourceforge.net/projects/openblas/files/v0.2.14/下载预编译的libopenblas.dll(我有OpenBLAS-v0.2.14-Win64-int32.zip)
  5. 同样从http://sourceforge.net/projects/openblas/files/v0.2.14/mingw64_dll.zip/download下载mingw64_dll.zip
  6. 例如解压OpenBLAS-v0.2.14-Win64-int32.zip到c:\openblas
  7. 将mingw64_dll.zip解压到c:\openblas\bin
  8. 将 c:\openblas\lib 和 c:\openblas\bin 添加到 PATH
  9. 在 c:\Users\{username} 中创建 .theanorc.txt
  10. 将以下内容放入 .theanorc.txt:

    [global]
    floatX = float32
    device = cpu
    
    [blas]
    ldflags = -LC:\\openblas\\bin -LC:\\openblas\\lib -lopenblas
    

希望这对某人有所帮助。

【讨论】:

    【解决方案4】:

    只是为了补充我在 Win10 64bit 和 theano(和 keras)方面的经验。我也收到了 DLL 加载失败错误。尝试了我在 theano win 安装网页以及不同的论坛和博客文章中找到的所有东西(在 Uradium 的文章中提到)。

    这对我不起作用,但这是有效的:

    1. 我安装了 TDM-GCC-64 和 openblas,使用 regedit 我已将它们的 /bin 目录添加到 PATH(以及 openblas 的 /lib 目录)

    2. 在 miniconda3 下制作了干净的 venv - 为 theano 和 keras(scipy、numpy、pyyaml)、python 3.5.2 安装了先决条件

    3. conda install mingw libpython

    4. conda install theano(同时安装所有 mingw 库)

    5. 此时 - 它起作用了 - 所以我没有使用任何 .theanorc.txt 文件配置,也没有摆弄 Windows 环境变量。它甚至适用于基于 keras 的 python 脚本,即使我没有将 keras 安装到它正在工作的 conda venv 中......(我在我的“普通”非 conda python3 中安装了 keras,后来我 pip 在下安装了 keras我的 conda venv 也是如此)。

    【讨论】:

      【解决方案5】:

      很晚了,但供将来参考。我偶然发现这个线程试图在 CPU 上运行 OpenBLAS 测试脚本。它在 GPU 上运行良好,但 CPU 给了我与 OP 相同的错误。我在这里尝试了这些建议,但没有奏效。原来.theanorc 中的行:

      ldflags=-LE:\OpenBLAS-v0.2.14-Win64-int32/bin -lopenblas
      

      在 bin 之后和 -l 之前不应有空格。所以应该是:

      ldflags=-LE:\OpenBLAS-v0.2.14-Win64-int32/bin-lopenblas
      

      现在一切正常。试了一下:

      Windows 10
      Python 3.5
      Theano 0.9
      Cuda 8 (with CudaMEM and CudaDNN)
      Visual Studio 2015 Community
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-19
        • 2019-01-09
        • 2016-05-23
        • 1970-01-01
        • 2016-06-24
        • 2017-10-19
        相关资源
        最近更新 更多