windows+pycharm下的theano配置问题

本文提供了一份详细的Theano安装步骤及解决遇到的各种问题的方法。从安装Anaconda开始,逐步讲解如何安装mingw和libpython,直至最终成功安装Theano。

复现论文参考官方代码时需用到theano框架,本以为一个简单的pip直接搞定,无奈连import theano都无法运行,紧接着冒出来一堆问题,直接肝了一个下午。

不过所幸最终theano配置问题已经解决,可以顺利进行后续源代码的学习。在此记录一下配置theano时的一些经历供大家参考。
以下经历或许会出现部分答案和问题不对应的情况,毕竟整个过程中出现的问题较多,可能出现一些细节差错,这种情况还希望大家谅解,并自行尝试将答案与问题进行匹配(简单说就是多尝试)。

问题初现:
import theano的报错如下:

WARNING (theano.configdefaults): g++ not available, if using conda: `conda install m2w64-toolchain`
balabala....................(一些代码)
configparser.NoSectionError: No section: 'blas'
balabala....................(一些代码)
KeyError: 'blas.ldflags'
balabala....................(一些代码)
AttributeError: module 'numpy.distutils.__config__' has no attribute 'blas_opt_info'

问题初步分析
第一个部分就让我很担心了,毕竟本着能省事就省事的原则,自己电脑上一直没有配置anaconda。
剩下的一堆显然是在提示缺少了一些跟“blas”相关的包,但也不能直接pip install blas或者pip install blas_opt_info什么的。所以对于一头雾水的我,只能直接C一下:windows下安装theano,上链接:
1、Windows下pycharm使用theano的方法
2、anaconda2.5+pycharm+theano环境配置
上面两个链接是我整理的比较通俗易懂的文章,总的来说,安装/配置顺序为:anaconda->mingw / libpython->theano。

安装mingw libpython
安装anaconda倒不是太麻烦,网上教程一堆,大家可以自行查找。这里为了节省时间,我安装了miniconda。安装libpython有些麻烦,教程说直接install:

conda install mingw libpython

可事实哪有这么容易,要顺利执行上述语句,得保证有mingw这个包,否则报错,所以还是老老实实去C了一下mingw。经查找,可以在以下网站找到安装包和安装指令(摘自“陆勼”的博客):
mingw 4.7安装包

conda install -c free mingw

万事大吉?不不不,下载进度一直0%…
怎么办?
我试着找源文件,点击上述网站的Files,出现下面内容,显然是一些不容版本的mingw,本着随大流的原则去下载“下载量”最高的那一个(第三行红框):
Files
鼠标放在绿色字符串右键复制链接,然后再用conda下载mingw。

conda install https://anaconda.org/free/mingw/4.7/download/win-64/mingw-4.7-1.tar.bz2

然后才可以继续安装libpython

conda install mingw libpython

此时可能还是会报错,提示channels相关的问题:

PackagesNotFoundError: The following packages are not available from current channels:

  - mingw

这里要感谢这位大佬的解答:“老卫带你学”的博客
貌似是官方不让用镜像的意思,但我复制的链接是在官网复制的啊,这里有些不太理解,可能这里我记错了一些顺序,所以这个channels问题和答案的匹配问题大家可以自行尝试,输入以下指令:

conda config --remove-key channels

然后再安装mingw和libpython

conda install mingw libpython

安装theano
最后安装theano:

conda install theano

出现一堆正在安装的依赖包就可以松口气了,等待即可:
安装theano过程
接下来尝试import theano,出现警告:

WARNING (theano.tensor.blas): Using NumPy C-API based implementation for BLAS functions.

虽然可以搜索这个bug的解决方案,网上也有很多,但我猜测是因为跟numpy有一定的依赖关系,而且代码中也要用到numpy,因而直接尝试:

import numpy as np
import theano

theano导入成功,问题解决:
theano导入成功
完结散花

### PyCharm 中安装 Theano 的教程 #### 准备工作 在开始之前,确保已经成功安装 Miniconda 或 AnacondaPyCharm。对于 Windows 用户来说,还需要额外准备一些依赖库来支持 Theano 运行。 #### 安装必要的编译工具链 由于 Theano 需要 C 编译器的支持,在 Windows 上推荐使用 MinGW 工具链。可以通过 Conda 来简化这个过程: ```bash conda install mingw libpython ``` 这一步骤能够解决大部分关于缺少编译器或者 Python 库链接错误的问题[^3]。 #### 创建新的 Conda 虚拟环境并激活 创建一个新的虚拟环境有助于隔离不同项目之间的包冲突问题。命令如下所示: ```bash conda create --name theano_env python=3.7 conda activate theano_env ``` #### 使用 Conda 安装 Theano 及其依赖项 Conda 提供了一个简单的方式来管理软件包及其版本兼容性。通过下面的指令可以完成 Theano 的安装: ```bash conda install theano ``` 如果希望获得最新特性或修复某些 bug,则可以从源码构建 Theano: ```bash pip install git+https://github.com/Theano/Theano.git@master ``` #### 在 PyCharm配置解释器 打开 PyCharm 后,进入 `File -> Settings` (Windows/Linux) 或者 `PyCharm -> Preferences` (macOS),找到 Project Interpreter 设置页面。点击齿轮图标选择 Add... ,然后挑选刚刚创建好的 conda 环境作为项目的默认解释器。 #### 测试安装是否成功 编写简单的测试程序验证 Theano 是否正常工作: ```python import numpy as np from theano import function, config, shared, tensor as T import time vlen = 10 * 30 * 768 # 10 x #cores x # threads per core iters = 1000 rng = np.random.RandomState(22) x = shared(np.asarray(rng.rand(vlen), config.floatX)) f = function([], T.exp(x)) print(f.maker.fgraph.toposort()) t0 = time.time() for i in range(iters): r = f() t1 = time.time() print("Looping %d times took %f seconds" % (iters, t1 - t0)) print("Result is %s" % (r,)) if np.any([isinstance(x.op, T.Elemwise) and 'exp' in type(x.op).__name__.lower() for x in f.maker.fgraph.toposort()]): print('Used the cpu') else: print('ERROR!') ``` 上述代码片段用于检测当前使用的计算设备以及性能表现情况。当一切设置无误时,应该可以看到输出结果表明 CPU 正常参与运算。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wlonbear

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值