关键词: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. JSP基础使用

    一.JSP简介 JSP(Java Sever Pages):是为了能让 Java 在 Web 页面运行的一种语言. 在JSP中包括两种主要内容: 1. HTML.JS语言(静态内容).由客户端浏览器负 ...

  2. TinyMce 使用初探

    https://www.cnblogs.com/nkxyf/p/3883586.html 参考:http://www.tinymce.com/    官网 http://www.tinymce.com ...

  3. Java并发系列[6]----Semaphore源码分析

    Semaphore(信号量)是JUC包中比较常用到的一个类,它是AQS共享模式的一个应用,可以允许多个线程同时对共享资源进行操作,并且可以有效的控制并发数,利用它可以很好的实现流量控制.Semapho ...

  4. java多线程编程——锁优化

    并发环境下进行编程时,需要使用锁机制来同步多线程间的操作,保证共享资源的互斥访问.加锁会带来性能上的损坏,似乎是众所周知的事情.然而,加锁本身不会带来多少的性能消耗,性能主要是在线程的获取锁的过程.如 ...

  5. 关于c++栈溢出的问题

    我自己定义了一个数据类型node,嵌套在另一个数据类型当中时候,用到了delete函数, 在我node的声明当中声明了几个指针 在我的析构函数中却调用了delet函数 结果程序结果是能跑出来 提示我栈 ...

  6. svn版本管理系统出现的问题解决办法

    首先会出现下面的一个提示错误: cannot checkout from svn run 'cleanup' if it was interrupted 百度加谷歌找到的解决问题的办法各种各样,自己遇 ...

  7. Request processing failed; nested exception is java.lang.IllegalArgumentException: No converter found for return value of type: class cn.e3mall.pojo.TbItem

    这个异常是缺少json相关的包 把以下依赖补上就好: <!-- Jackson Json处理工具包 --><dependency> <groupId>com.fas ...

  8. Nginx 开启gzip压缩(图片,文件,css)

    1.Vim打开Nginx配置文件 vim /usr/local/nginx/conf/nginx.conf 2.找到如下一段,进行修改 gzip on; gzip_min_length 1k; gzi ...

  9. Tcpdump安装使用

    本来想安装wireshark yum install wireshark  命令行下使用,包含抓包的基本功能 yum install wireshark-gnome  提供wireshark(UI)工 ...

  10. Linux(二)命令

    Linux命令一.命令基本格式 命令行头部显示字符意义 [root@localhost ~] # root 用户名 localhost 主机名 ~ 当前目录 ~表示home目录 # 用户权限,#表示超 ...