DeepLearning入门笔记(一),准备工作与注意事项
本文记录了安装theano、keras、tensorflow以及运行tutorial程序时遇到的一些问题,供后人参考。
实验机器:联想笔记本,i7-6700HQ,GTX960M,16G内存,SSD硬盘,64位Ubuntu 16.04 LTS
备注:
不推荐windows,会遇到各种不兼容问题。Ubuntu最好使用16.04这个版本,低版本的Ubuntu可能出现显卡驱动不支持等问题。
- Ubuntu16.04 装好后,注意将系统默认的显卡驱动改为nvidia的驱动,并更新显卡驱动,我用的是version 367.48。
TensorFlow的gpu版本安装比较麻烦,由于CUDA版本兼容问题,如果使用当前最新的CUDA 8.0,则需要自己重新编译TensorFlow源代码,然后本地安装。
建议先安装Theano和Keras,流程相对容易,早点跑出“hello world”,增强信心。
安装Theano作为后端的Keras:
详细流程可参见
http://keras-cn.readthedocs.io/en/latest/getting_started/keras_linux/
流程中安装CUDA和cuDNN时,应选择CUDA 8.0和cuDNN 5.0,安装完毕后,一定要记得重启电脑!否则运行tutorial代码会提示no CUDA-capable device is detected
按照教程运行mnist_mlp.py,会有如下提示,说明GPU加速成功,每次Epoch需要1s,如果是CPU版本的训练,则一次Epoch需要70s左右。
Using Theano backend.
Using gpu device : GeForce GTX 960M (CNMeM is enabled with initial size: 80.0% of memory, cuDNN )
安装Tensorflow:
在官方教程里,有编译好的whl给我们直接安装(通过pip install),比如我的机器就选下面这个
# Ubuntu/Linux -bit, GPU enabled, Python 2.7
# Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Install from sources" below.
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.11.0rc1-cp27-none-linux_x86_64.whl
但实际操作后会遇到报错,具体报错信息我没保存,今天反思了一下,估计是因为我的CUDA安装路径不是TensorFlow默认的"/usr/local/cuda",而是"/usr/local/cuda-8.0",可能把文件名改一下就好了的。当时我实际的解决方案是git clone TensorFlow源代码,然后自己配置环境并重新编译。。。
编译TensorFlow也比较麻烦,最靠谱的安装教程应该是这个
http://textminingonline.com/dive-into-tensorflow-part-iii-gtx-1080-ubuntu16-04-cuda8-0-cudnn5-0-tensorflow
首先需要安装JDK,虽然Ubuntu自带了OpenJDK,但还是按照网上教程,卸载了OpenJDK,装了Oracle JDK并配置好环境变量。然后就是安装Google内部使用的build工具Bazel,中间应该是有报错的,我记得是提示有依赖包没有安装,google一下可以找到解决方案,然后成功安装好bazel之后,就可以进行编译了。
编译之前,要先git clone TensorFlow,这里我直接下载了master版本,所以后面发现版本太新,无法与keras兼容。。不过先暂时这样吧。下载好之后,要cd到TensorFlow源代码主目录,然后./configure配置环境,这里面最重要的就是设置好CUDA和cuDNN的版本和路径,注意TensorFlow默认的CUDA路径是“/usr/local/cuda”,而CUDA 8.0的默认安装路径是“/usr/local/cuda-8.0”,所以配置的时候一定要手动修改一下。
配置完毕之后,按照教程用bazel编译即可。编译大概要十多分钟,结束之后得到whl文件,然后用pip install,大功告成。此时再在python里import tensorflow,可以看到以下信息
>>> import tensorflow
I tensorflow/stream_executor/dso_loader.cc:] successfully opened CUDA library libcublas.so.8.0 locally
I tensorflow/stream_executor/dso_loader.cc:] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:] successfully opened CUDA library libcufft.so.8.0 locally
I tensorflow/stream_executor/dso_loader.cc:] successfully opened CUDA library libcuda.so. locally
I tensorflow/stream_executor/dso_loader.cc:] successfully opened CUDA library libcurand.so.8.0 locally
用TensorFlow跑MNIST数据集:
这个算是我们的hello world吧。按照官方教程,只需要下面两条命令就可以跑起来并得到不错的分类结果
$ cd tensorflow/models/image/mnist
$ python convolutional.py
但实际运行的时候,会发现terminal没有任何输出,原因是程序需要先下载MNIST数据集,数据源在国外,不翻墙的话很慢。用gedit打开convolutional.py,可以找到数据源的地址,以及下载存放的路径,我们可以翻墙自己下载数据,然后根据需要修改一下
源代码里的文件路径即可。如果有GPU加速,会看到以下信息:
I tensorflow/core/common_runtime/gpu/gpu_device.cc:] Found device with properties:
name: GeForce GTX 960M
major: minor: memoryClockRate (GHz) 1.176
pciBusID ::00.0
Total memory: .95GiB
Free memory: .57GiB
I tensorflow/core/common_runtime/gpu/gpu_device.cc:] DMA:
I tensorflow/core/common_runtime/gpu/gpu_device.cc:] : Y
I tensorflow/core/common_runtime/gpu/gpu_device.cc:] Creating TensorFlow device (/gpu:) -> (device: , name: GeForce GTX 960M, pci bus id: ::00.0)
Initialized!
Step (epoch 0.00), 7.8 ms
Minibatch loss: 12.054, learning rate: 0.010000
Minibatch error: 90.6%
Validation error: 84.6%
Step (epoch 0.12), 16.6 ms
Minibatch loss: 3.297, learning rate: 0.010000
Minibatch error: 6.2%
Validation error: 7.5%
Step (epoch 0.23), 16.5 ms
Minibatch loss: 3.459, learning rate: 0.010000
Minibatch error: 12.5%
Validation error: 3.9%
.......(后面的print信息被我省略掉了)
用TensorFlow跑word2vec:
官方教程在这里
https://www.tensorflow.org/versions/r0.11/tutorials/word2vec/index.html#vector-representations-of-words
我们运行 tensorflow/examples/tutorials/word2vec/word2vec_basic.py ,它还是要先自动下载数据,如果很慢的话,同样可以自己下载搞定。然后训练完毕之后会用TSNE对词向量做可视化,这里需要再安装几个matplotlib,sklearn,scipy这三个python包,注意matplotlib还需要安装Tkinter,可以用下面的命令
apt-get install python-tk
最后训练完的词向量如图

DeepLearning入门笔记(一),准备工作与注意事项的更多相关文章
- React.js入门笔记
# React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的 ...
- MySQL入门笔记
MySQL入门笔记 版本选择: 5.x.20 以上版本比较稳定 一.MySQL的三种安装方式: 安装MySQL的方式常见的有三种: · rpm包形式 · 通用二进制 ...
- Python爬虫 小白[3天]入门笔记
笔记来源 Day-0 1.如果你还不了解Python的基础语法,可以移步|>>>Python 基础 小白 [7天] 入门笔记<<<|或自行学习. 简介 1.什么是爬 ...
- 每天成长一点---WEB前端学习入门笔记
WEB前端学习入门笔记 从今天开始,本人就要学习WEB前端了. 经过老师的建议,说到他每天都会记录下来新的知识点,每天都是在围绕着这些问题来度过,很有必要每天抽出半个小时来写一个知识总结,及时对一天工 ...
- ES6入门笔记
ES6入门笔记 02 Let&Const.md 增加了块级作用域. 常量 避免了变量提升 03 变量的解构赋值.md var [a, b, c] = [1, 2, 3]; var [[a,d] ...
- [Java入门笔记] 面向对象编程基础(二):方法详解
什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...
- redis入门笔记(2)
redis入门笔记(2) 上篇文章介绍了redis的基本情况和支持的数据类型,本篇文章将介绍redis持久化.主从复制.简单的事务支持及发布订阅功能. 持久化 •redis是一个支持持久化的内存数据库 ...
- redis入门笔记(1)
redis入门笔记(1) 1. Redis 简介 •Redis是一款开源的.高性能的键-值存储(key-value store).它常被称作是一款数据结构服务器(data structure serv ...
- OpenGLES入门笔记四
原文参考地址:http://www.cnblogs.com/zilongshanren/archive/2011/08/08/2131019.html 一.编译Vertex Shaders和Fragm ...
随机推荐
- STC12C5A60S2 @ 22.0184Mhz 精确延时
#include "STC12.h" // STC12C5A60S2 @ 22.0184Mhz 精确延时 void delay_10us(unsigned char n) { un ...
- 《企业应用架构模式》(POEAA)读书笔记
原文地址:<企业应用架构模式>(POEAA)读书笔记作者:邹齐龙(技术-5013 什么是架构 Rolph Johnson认为:架构是一种主观上的东西,是专家级的项目开发人员对系统设计的一些 ...
- 从客户端(txtContent="<p>1</p>")中检测到有潜在危险的 Request.Form 值
输入1也报这个错误, <pages validateRequest="false" 改了也不行,在页头改也不行.到底什么情况呢? 从这个地方找到了答案:http://nt.d ...
- Oracle查询
1.普通查询 select * from 表格 查询所有内容 select 列名,列名 from 表格查询某几列 2.条件查询 select * from 表格 where 条件 条件查询 selec ...
- LeetCode 6 ZigZag Conversion 模拟 难度:0
https://leetcode.com/problems/zigzag-conversion/ The string "PAYPALISHIRING" is written in ...
- Redis设计与实现(一~五整合版)【搬运】
Redis设计与实现(一~五整合版) by @飘过的小牛 一 前言 项目中用到了redis,但用到的都是最最基本的功能,比如简单的slave机制,数据结构只使用了字符串.但是一直听说redis是一个很 ...
- node.js中buffer需要知道的一些点
本文为阅读朴灵大大的<深入浅出node.js>笔记: 在前端开发的时候,我们不曾用过buffer,也没得用.buffer是node环境引入的,用来方便应对二进制数据的处理.这里我们对它应该 ...
- Redis 3.0.0 集群部署
简述: 1.0.1:redis cluster的现状 目前redis支持的cluster特性 1):节点自动发现 2):slave->master 选举,集群容错 3):Hot reshardi ...
- Ftrl in tensorflow
reference :点击这里https://github.com/tensorflow/tensorflow/issues/3725 讲解 http://www.tuicool.com/articl ...
- 【CSS3 入门教程系列】CSS3 Media Queries 实现响应式设计
在 CSS2 中,你可以为不同的媒介设备(如屏幕.打印机)指定专用的样式表,而现在借助 CSS3 的 Media Queries 特性,可以更为有效的实现这个功能.你可以为媒介类型添加某些条件,检测设 ...