Theano环境搭建/安装
关键词:theano安装,搭建theano环境, python, 深度学习
因为需要安装theano,结果发现这又是一个难以安装的python包…虽然网上教程不少,然而鱼龙混杂,试验了各种方法流程,最后总算是弄好了,现在把我的过程总结如下:
安装环境
- 64位win7系统,显卡:GT 730M,笔记本电脑;
- 已安装Visual Studio 2013 (都说VS2015太新不推荐);
- 借助Anaconda来安装theano,因为Anaconda已经集成了很多有用的python库,如numpy、nose、scipy等,强烈推荐。
安装Anaconda
- 我的版本:python2.7 windows 64-bit
- 下载地址:https://www.continuum.io/downloads
安装mingw
- 安装完之后,如果Anaconda目录里没有MinGW文件夹(据说这个跟Anaconda版本有关,有的版本会有,有的版本则没有。由于折腾的步骤太多,我也不确定自己这个版本一开始有没有),则通过如下方法安装mingw:
- 打开cmd,直接输入Anaconda的安装命令(为了避免干扰我已经卸载了系统里其他的python版本):
conda install mingw libpython
- 安装成功之后,Anaconda文件夹下就会出现MinGW文件夹。如果这个没有装好,运行测试时会提示存在g++问题。
- 这一步并没有下载其他乱七八糟的mingw安装软件,有很多教程是通过安装mingw软件来实现的。
安装theano
- 通过cmd直接运行以下命令(系统里有多个python版本的注意区分pip):
pip install theano
- 不要用什么theano.zip解压到目录底下或者theano_installer_latest.msi之类的方法安装。
- 目前的theano版本:0.8.2
配置环境变量
- 需要根据自己的安装路径来添加
- 在PATH添加(这个在Anaconda安装时可能已经设置了):
D:\Anaconda;D:\Anaconda\Scripts;
- 新建变量PYTHONPATH:(用来指明theano的安装目录)
D:\Anaconda\Lib\site-packages\theano;
- 在cmd的home目录中新建 .theanorc.txt 文件(作为theano的配置文件,注意名字中的第一个“.”,如果已经存在,则直接修改该文件),设置如下内容:
所谓cmd的home目录:打开cmd时,在>前面的默认路径:

[global]
openmp=False
[blas]
ldflags =
[gcc]
cxxflags = -ID:\Anaconda\MinGW\include
theano测试
下面测试theano是否安装成功:
- 测试方法1
用以下两行代码:
import theano
print theano.config.blas.ldflags

没有出错(没有返回值)则说明已经配置成功。
其实单单是import theano不报错就已经谢天谢地了。
- 测试方法2
或者用下面的指令测试(测试时会有其他错误提示或是warnings,但基本上还能运行的话则说明theano没问题,错误提示可能是有些东西还没安装好):
import theano
theano.test()
运行:

例如我这里提示没有nose-parameterized这个模块,安装方法:
pip install nose-parameterized
例如会提示PyCUDA的相关错误信息等。
注意:测试2必须在cpu下运行,在下面的GPU搭建中,如果配置了theano的device = gpu,则测试2就不能运行了。
- 测试方法3
通过验证BLAS是否安装成功:由于numpy是以来BLAS的,如果BLAS没有安装成功,虽然numpy也可以安装,但是无法使用BLAS的加速。
验证numpy是否真的成功依赖BLAS编译,用以下代码测试:
import numpy
id(numpy.dot) == id(numpy.core.multiarray.dot)
如果结果为False,表示成功依赖了BLAS加速,如果是TRUE则表示用的是python自己的实现,并没有加速。(我这里总是显示TRUE,暂时不知道为什么,但是前面的测试又表明theano已经安装成功)
使用GPU
上面的theano配置只是完成了上半部分,这个时候还不能进行gpu加速。如果使用GPU则需要继续以下步骤:
CUDA安装
- 首先检查自己的显卡是否支持CUDA(显卡至少是NVIDIA的),在如下网址查看具体是否支持:
- 确定已经安装Visual Studio
- 下载对应自己系统版本的CUDA,我用的是CUDA Toolkit 7.5, win7 x86_64
- 安装的时候注意选自定义安装,模块全部选上,精简版可能会遗漏需要的模块
- 验证安装成功:cmd输入nvcc -V,如果能出现版本信息,则证明nvcc安装成功
Theano文件配置(GPU)
- 编辑Theano的配置文件.theanorc.txt , 添加如下内容:(具体内容应当对应自己的Python版本和VS版本以及路径做适当修改)
[nvcc]
fastmath = True
flags = -LD:\Anaconda\libs
compiler_bindir = D:\Microsoft Visual Studio 2013\VC\bin
- 继续编辑Theano的配置文件,添加:
[global]
device = gpu
floatX = float32
Theano配置文件
最终的Theano配置文件内容为:
[global]
device = gpu
floatX = float32
openmp=False
[blas]
ldflags =
[gcc]
cxxflags = -ID:\Anaconda\MinGW\include
[nvcc]
flags = -LD:\Anaconda\libs
compiler_bindir = D:\Microsoft Visual Studio 2013\VC\bin
- 在Python中运行”import theano.sandbox.cuda”. 将会编译第一个Cuda文件, 应当没有错误产生。
测试是否使用GPU
- 测试方法1
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
功能:测试是否使用GPU
时间:2016年6月10日 11:20:10
"""
from theano import function, config, shared, sandbox
import theano.tensor as T
import numpy
import time
vlen = 10*30*768 # 10 x cores x threads per core
iters = 1000
rng = numpy.random.RandomState(22)
x = shared(numpy.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' % iters, t1 - t0, 'seconds')
print('Result is', r)
if numpy.any([isinstance(x.op, T.Elemwise) for x in f.maker.fgraph.toposort()]):
print('Used the cpu')
else:
print('Used the gpu')
使用GPU的测试结果:1.66秒

使用CPU的测试结果:17.28秒
切换成cpu的方法,我是通过更改theano配置文件,将.theanorc.txt的内容只保留以下内容(可能需要重启电脑):
[blas]
ldflags =
[gcc]
cxxflags = -ID:\Anaconda\MinGW\include

- 测试方法2
在theano库中找到theano/misc/check_blas.py,运行这个测试文件。
这个测试文件里还有不同型号显卡的性能结果,以供对比。

其他可选
- Visual Studio 2013下的安装配置
- 为了方便以后建立统一的算法调用平台,故使用Visual Studio来进行图形化界面的开发,安装Python Tools for Visual Studio后即可在Visual Studio环境下来调用当前系统中的Python编译环境。
- 安装Python Tools for Visual Studio (2013),下载地址:
- http://www.aibbt.com/a/18928.html
Theano环境搭建/安装的更多相关文章
- 【转】android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)
原文网址:http://www.cnblogs.com/zdz8207/archive/2012/11/27/android-ndk-install.html android 最新 NDK r8 在w ...
- android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)
android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创) 一直想搞NDK开发却一直给其他事情耽搁了,参考了些网上的资料今天终于把 ...
- Android NDK r8 Cygwin CDT 在window下开发环境搭建 安装配置与使用 具体图文解说
版权声明:本博客全部文章均为原创.欢迎交流.欢迎转载:转载请勿篡改内容,而且注明出处,谢谢! https://blog.csdn.net/waldmer/article/details/3272500 ...
- linux内核学习之一:环境搭建--安装Debian7.3
本系列文章假设读者已对linux有一定的了解,其实学习linux内核不需要有很深的关于linux的知识,只需要了解以下内容:linux基础知识及基本shell命令:现代操作系统的基本概念:C语言和gc ...
- linux/centos elasticsearch 环境搭建 安装 运行 使用
环境搭建也是有些坑的存在,所以整理了一下搭建流程,安全无痛. ElasticSearch是一个开源的分布式搜索引擎,具备高可靠性,支持非常多的企业级搜索用例. 一.java 环境 直接apt安装火箭一 ...
- python服务器环境搭建——安装相关软件
在上一篇我们在本地的虚拟服务器上安装好CentOS7后,我们的python web服务.自定义的python service或python脚本需要在服务器上运行,还需要在服务器安装各种相关的软件才行, ...
- 【Python】部署上手App后端服务器 - Linux环境搭建安装Python、Tornado、SQLAlchemy
基于阿里云服务器端环境搭建 文章目录 基于阿里云服务器端环境搭建 配置开发环境 安装 Python 3.8.2 安装 Tornado 安装 MySQL 安装 mysqlclient 安装 SQLAlc ...
- redis教程-redis环境搭建安装(qq:1324981084)
需要整套redis缓存高可用集群教学视频的加qq:1324981084,本套视频从安装到集群的搭建和源码的解析,从零基础讲解. 1.利用命令将redis下载到/usr/local/文件夹下: wget ...
- RobotFramework自动化测试之环境搭建安装教程(一)
RobotFramework是基于Python语言的工具,所以装RF之前要先安装Python: Python现在有2.7跟3.5两个版本,如果是先装了3.5的话,是装不了2.7的.只有先装2.7的 才 ...
随机推荐
- opencv-python与c++ opencv中的一些区别和基础的知识
使用opencv-python一段时间了,因为之前没有大量接触过c++下的opencv,在网上看c++的一些程序想改成python遇到了不少坑,正好在这里总结一下. 1.opencv 中x,y,hei ...
- Hive metastore整体代码分析及详解
从上一篇对Hive metastore表结构的简要分析中,我再根据数据设计的实体对象,再进行整个代码结构的总结.那么我们先打开metadata的目录,其目录结构: 可以看到,整个hivemeta的目录 ...
- 基于MATLAB2016b图形化设计自动生成Verilog语言的积分模块及其应用
在电力电子变流器设备中,常常需要计算发电量,由于电力电子变流器设备一般是高频变流设备,所以发电量的计算几乎时实时功率的积分,此时就会用到一个积分模块.发电量计算的公式如下:Q=∫P. FPGA由于其并 ...
- MySQL数据库基础(四)(子查询与链接)
1.子查询简介 其中,所谓的"外层查询"并不是指"查找",指的是所有SQL语句的统称:结构化查询语言(Structured Query Language),简称 ...
- 【学习笔记】Spring中的BeanFactory和ApplicationContext 以及 Bean的生命周期(Y2-3-2)
BeanFactory和ApplicationContext Spring的IoC容器就是一个实现了BeanFactory接口的可实例化类. Spring提供了两种不同的容器: 一种是最基本的Bean ...
- 2.数码相框-编码(ASCII/GB2312/Unicode)介绍,并使LCD显示汉字字符(2)
在上章-学习了数码相框的框架分析(1)了 本章主要内容如下: 1)熟悉ASCII/GB2312/Unicode编码 2)写应用程序,使LCD显示汉字和字符 大家都知道,数据传输的是二进制,而字符和汉字 ...
- mac idea中的Application Server was not connected before run configuration stop, reason: Unable to ping server at localhost:1099问题
今天上午用的好好的就出现了这个问题 真是奇怪: Google了一番有以下解决办法: 1.hosts文件的问题: vi /etc/hosts文件 添加127.0.0.1 localhost里面 2.m ...
- URL末尾处的斜杠“/”
在输入网址的时候,比如输入"http://www.xxx.com/",此URL中末尾的斜杠是至关重要的.因为在这种情况下,浏览器能安全的添加斜杠.而像"http://ww ...
- Linux分区和挂载(mount命令的学习)
当Windows系统出现问题的时候,可能需要重装系统,这个时候我们往往会使用系统盘将系统重新安装在C盘上,其他盘上的文件都没有受到重装系统的影 响,这就是分区的好处之一.同样,在Linux中也需要分区 ...
- SQL注入攻击三部曲之进阶篇
SQL注入攻击三部曲之进阶篇 通过入门篇的学习,我们知道了SQL注入攻击的判断方法,但是如果想侵入网站,获取网站的机密内容,那么仅靠入门篇的知识是无法达到的.本篇文章我们将进一步的分析SQL注入攻击. ...