关键词:theano安装,搭建theano环境, python, 深度学习
因为需要安装theano,结果发现这又是一个难以安装的python包…虽然网上教程不少,然而鱼龙混杂,试验了各种方法流程,最后总算是弄好了,现在把我的过程总结如下:

安装环境

  • 64位win7系统,显卡:GT 730M,笔记本电脑;
  • 已安装Visual Studio 2013 (都说VS2015太新不推荐);
  • 借助Anaconda来安装theano,因为Anaconda已经集成了很多有用的python库,如numpy、nose、scipy等,强烈推荐。

安装Anaconda

安装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环境搭建/安装的更多相关文章

  1. 【转】android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)

    原文网址:http://www.cnblogs.com/zdz8207/archive/2012/11/27/android-ndk-install.html android 最新 NDK r8 在w ...

  2. android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)

      android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创) 一直想搞NDK开发却一直给其他事情耽搁了,参考了些网上的资料今天终于把 ...

  3. Android NDK r8 Cygwin CDT 在window下开发环境搭建 安装配置与使用 具体图文解说

    版权声明:本博客全部文章均为原创.欢迎交流.欢迎转载:转载请勿篡改内容,而且注明出处,谢谢! https://blog.csdn.net/waldmer/article/details/3272500 ...

  4. linux内核学习之一:环境搭建--安装Debian7.3

    本系列文章假设读者已对linux有一定的了解,其实学习linux内核不需要有很深的关于linux的知识,只需要了解以下内容:linux基础知识及基本shell命令:现代操作系统的基本概念:C语言和gc ...

  5. linux/centos elasticsearch 环境搭建 安装 运行 使用

    环境搭建也是有些坑的存在,所以整理了一下搭建流程,安全无痛. ElasticSearch是一个开源的分布式搜索引擎,具备高可靠性,支持非常多的企业级搜索用例. 一.java 环境 直接apt安装火箭一 ...

  6. python服务器环境搭建——安装相关软件

    在上一篇我们在本地的虚拟服务器上安装好CentOS7后,我们的python web服务.自定义的python service或python脚本需要在服务器上运行,还需要在服务器安装各种相关的软件才行, ...

  7. 【Python】部署上手App后端服务器 - Linux环境搭建安装Python、Tornado、SQLAlchemy

    基于阿里云服务器端环境搭建 文章目录 基于阿里云服务器端环境搭建 配置开发环境 安装 Python 3.8.2 安装 Tornado 安装 MySQL 安装 mysqlclient 安装 SQLAlc ...

  8. redis教程-redis环境搭建安装(qq:1324981084)

    需要整套redis缓存高可用集群教学视频的加qq:1324981084,本套视频从安装到集群的搭建和源码的解析,从零基础讲解. 1.利用命令将redis下载到/usr/local/文件夹下: wget ...

  9. RobotFramework自动化测试之环境搭建安装教程(一)

    RobotFramework是基于Python语言的工具,所以装RF之前要先安装Python: Python现在有2.7跟3.5两个版本,如果是先装了3.5的话,是装不了2.7的.只有先装2.7的 才 ...

随机推荐

  1. Leetcode刷题C#版之 Length of Last Word

    题目: Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return t ...

  2. Redis 学习(一) —— 安装、通用key操作命令

    一.Redis介绍 1.介绍 通常,在系统中,我们会把数据交由数据库来存储,但传统的数据库增删查改的性能较差,且比较复杂.根据 80/20 法则,百分之八十的业务访问集中在百分之二十的数据上.是否可以 ...

  3. Docker安装Jenkins

    1.下载镜像 docker pull jenkins 2.生成一个容器 docker run -d --name myjenkins -p 8081:8080 -p 50000:50000  --vo ...

  4. [SDOI2015]序列统计

    [SDOI2015]序列统计 标签: NTT 快速幂 Description 给你一个模m意义下的数集,需要用这个数集生成一个数列,使得这个数列在的乘积为x. 问方案数模\(1004535809\). ...

  5. Redis进阶实践之十二 Redis的Cluster集群动态扩容

    一.引言     上一篇文章我们一步一步的教大家搭建了Redis的Cluster集群环境,形成了3个主节点和3个从节点的Cluster的环境.当然,大家可以使用 Cluster info 命令查看Cl ...

  6. springMvc学习笔记一

    什么是springmvc  springmvc就是spring框架的一个模块 所以springmvc与spring之间无需通过中间整合层进行整合的. springmvc又是基于mvc的web框架 mv ...

  7. Hibernate学习(一)创建数据表

    (1)生成数据库表的创建: // 默认读取hibernate.cfg.xml文件 Configuration cfg = new Configuration().configure(); // 生成并 ...

  8. ICQ

    我一直都想编一个自己的聊天软件,像QQ那种:最近有时间我就自己编了一个.编写的过程中收获很大…… 现在拿出来跟大家分享,有兴趣的朋友可以和我交流交流. 先给大家看一下效果: 启动服务器: 再给大家看一 ...

  9. Java基础系列--集合之ArrayList

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/8494618.html 一.概述 ArrayList是Java集合体系中最常使用,也是最简单 ...

  10. C++ string数据类型的实现

    #include <cstdlib> #include <cstring> class Mystring { public: Mystring(const char * pda ...