anaconda numpy,theano和pymc3安装在Windows 10 64bit

时间:2016-12-27 11:08:24

标签: python

作为初学者,我尝试在我的表面上安装pymc3 pro 4 / win 10 64bit,在网上搜索了几个信息并且遇到了几个问题。现在我想分享我的经验并提出一些问题。

首先 ,我选择了带有python 3.5的winpython 3.5.2.3Qt5。但是当我运行pymc3开始示例线性回归模型enter link description here时,我遇到崩溃错误:有时是“内核死亡”,有时是“ImportError:DLL加载失败:初始化例程失败”。为了解决这个问题,我搜索了博客/文章,发现其他人推荐使用python 2.7 enter link description here的anaconda。还有人说theano 0.8.2只是支持python 3.4,而不是3.5。我想有一些兼容的问题会导致崩溃。 所以最后我用python 2.7安装了anaconda 4.2 64bit。

问题1 :由于来自anaconda 2.5 MKL是免费且自动安装的,我根据一些博客测试了numpy和MKL之间的链接。

1)

numpy.__config__.show()
lapack_opt_info:
    libraries = ['mkl_core_dll', 'mkl_intel_lp64_dll', 'mkl_intel_thread_dll']
    library_dirs = ['C:/Users/sejab/Anaconda2\\Library\\lib']
    define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
    include_dirs = ['C:/Users/sejab/Anaconda2\\Library\\include']
blas_opt_info:
    libraries = ['mkl_core_dll', 'mkl_intel_lp64_dll', 'mkl_intel_thread_dll']
    library_dirs = ['C:/Users/sejab/Anaconda2\\Library\\lib']
    define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
    include_dirs = ['C:/Users/sejab/Anaconda2\\Library\\include']
openblas_lapack_info:
  NOT AVAILABLE
lapack_mkl_info:
    libraries = ['mkl_core_dll', 'mkl_intel_lp64_dll', 'mkl_intel_thread_dll']
    library_dirs = ['C:/Users/sejab/Anaconda2\\Library\\lib']
    define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
    include_dirs = ['C:/Users/sejab/Anaconda2\\Library\\include']
blas_mkl_info:
    libraries = ['mkl_core_dll', 'mkl_intel_lp64_dll', 'mkl_intel_thread_dll']
    library_dirs = ['C:/Users/sejab/Anaconda2\\Library\\lib']
    define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
    include_dirs = ['C:/Users/sejab/Anaconda2\\Library\\include']

但是anaconda文件夹中没有mkl_intel_lp64文件。 没关系吗?

2)id(numpy.dot) == id(numpy.core.multiarray.dot) >> True 有人说,如果他们被链接,numpy应该使用numpy.core._dotblas。 这是否意味着numpy dot在环境中也使用多阵列而不是MKL blas?

总之,是否会自动与anaconda中的MKL链接?

第二 ,Theano是一个特殊的包,因为它需要c / c ++和cuda编译配置。因为我的笔记本电脑没有Nvidia GPU,我只需要关注c / c ++编译环境。官方theano安装指南和许多文章/博客建议首先使用conda install mingw libpython 然后是git。但是,我发现conda install theano已经包含了mingw64(可能是TDM-GCC 64?)组件和libpython。所以我只是运行命令来安装theano并认为它足够了。然后我把g ++的路径放到系统路径上 (在我的环境中,它是

  

“C:\ Users \ sejab \ Anaconda2 \ Library \ mingw-w64 \ bin”,“C:\ Users \ sejab \ Anaconda2 \ Library \ mingw-w64 \ x86_64-w64-mingw32 \ bin”   和相应的“包含”路径。

要验证安装,请使用测试程序

import numpy as np
import time
import theano
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(), ))

没关系。 Result difference: 0.000000

第三次 ,我按照官方手册安装指南和其他博客上的说明进行操作,

1)下载预编译的 OpenBLAS-v0.2.19-Win64-int32.zip 并解压缩到c:\,将其bin和include路径放入系统路径;

2)在根

中创建.theanorc.txt
  

C:\用户\ sejab

并写入

[global]
device = cpu
floatX = float64

[blas]
ldflags = -LC:/OpenBLAS-v0.2.19-Win64-int32/bin -lopenblas

用theano配置oopenblas。再次运行上面的测试,

NP time: 0.431000[s], theano time: 0.307000[s] (times should be close when run on CPU!) Result difference: 0.000000

如果floatX = float32,则Result difference不为0.

问题2 :有没有其他方法可以验证theano和openblas之间的链接?测试CPU时间改变甚至固定矩阵A,B的值。

问题3 :在测试中,theano会自动使用多核吗?如果没有,如何配置?

最后 ,我使用conda install -c conda-forge pymc3安装pymc3。在pymc3官方教程中解决相同的线性回归模型没有问题。

这有点长,但我希望它可以帮助别人。

0 个答案:

没有答案