汐月教育之理解TensorFlow(一)安装配置与基本使用
来源:互联网 发布:大数据主要来源于机 编辑:程序博客网 时间:2024/05/03 08:55
一. 安装和卸载(TensorFlow有5种安装方法之多,本文只介绍pip安装)
a. pip安装tensorflow
注意pip安装Tensorflow目前只能安装到64位系统之下,不支持32位。Pip是Python下的一个包管理和安装软件(与easy_install齐名)
本文首先尝试在虚拟机中Ubuntu16.4, 64位,CPU模式,Python 2.7之下安装. Python2.7在16.4下已经自带.
i. 安装pip
$ sudo apt-get install python-pip python-dev # Ubuntu/Linux 64-bit
ii. 设置下载地址变量,别的OS下是别的网址,可以自己去git上看.
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0-cp27-none-linux_x86_64.whliii. 安装tensorflow
sudo pip install --upgrade $TF_BINARY_URL注意,注意,这里你很可能连不上网,有坑 . 毕竟要从google下载,所以你可能需要科学上网才能继续下载咯。
b. pip卸载tensorflow
$ sudo pip uninstall tensorflow
c. anaconda中使用pip安装tensorflow
i. 新建conda环境(意思似乎就是说不安装到anaconda2/lib/python2.7目录下,自己给这么庞大的程序单独安装到一个文件夹:envs/tensorflow)
注意anaconda2/envs文件夹没有权限,如果直接安装,不会撞到usr/local/anaconda2/envs,而是安装到home/wayne/.conda/envs文件夹,所以我们要先获取文件夹的超级权限。
sudo chmod 777 -R /usr/local/anaconda2conda create -n tensorflow Python=2.7ii. 激活tensorflow环境,并安装
source activate tensorflowexport TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0-cp27-none-linux_x86_64.whlsudo pip install --ignore-installed --upgrade $TF_BINARY_URLiii. 退出tensorflow环境,完成安装 (以后每次使用tensorflow之前都需要激活一下tensorflow环境)
source deactivate tensorflow
二. 安装位置
1. 普通pip安装位置
/usr/local/lib/python2.7/dist-packages/tensorflow/usr/local/lib/python2.7/site-packages/tensorflow
2. anaconda下安装位置
/usr/local/anaconda2/envs/tensorflow/lib/python2.7/site-packages/tensorflow
3. 目录结构
按照上一节的pip安装方法后,tensorflow整个库包被安装到了目录下;在上图中,左边为安装后位置的文件夹,右边的是从github上下载的源码包。发现配置过程中删除了部分文件(examples下的部分文件不翼而飞了)(原来源代码中还有一个model文件夹,其实和examples都是例子,在1.0.0之后models文件夹也去除了),如果想看某些例子文件,可以去源代码中examples文件夹下去看。
(
Example:用来存放网络教程中讲的源代码。
Model:储存目前TF上完善的模型的代码。包括embedding(词向量)、image(图像)、rnn(循环神经网络)这些代码。都是可以直接运行的。
这是针对0.8.0版本说的,现在models文件夹已经没有
)
三. 运行短代码,查看是否安装成功
1. 启动python
$ python
2. 输入代码>>> import tensorflow as tf>>> hello = tf.constant('Hello, TensorFlow!')>>> sess = tf.Session()>>> print(sess.run(hello))3. 输出结果
Hello, TensorFlow!
四. 配置GPU下安装TF
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"
export CUDA_HOME=/usr/local/cuda
这两个是开启GPU加速的关键,在import tensorflow之前一定要运行.
因此这两个东西可以放到环境变量文件中(开机之后默认运行),对于控制台可以放入./.bashrc文件中,对于pycharm应该要放入pycharm文件夹/bin/pycharm.sh文件中。
因为pycharm执行环境和.bashrc文件独立的
在.bashrc中添加:
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"
export CUDA_HOME=/usr/local/cuda
在/bin/pycharm.sh中添加:
LD_LIBRARY_PATH='/usr/local/cuda/lib64'
LD_LIBRARY_PATH='$LD_LIBRARY_PATH:LD_LIBRARY_PATH/usr/local/cuda/extras/CUPTI/lib64'
http://blog.csdn.net/wo334499/article/details/52238986
小试牛刀 (tensorflow更新太快了,下面可能要废弃了)
a. 小试是否安装成功,打开terminal
$ python>>> import tensorflow as tf>>> hello = tf.constant('Hello, TensorFlow!')>>> sess = tf.Session()>>> print(sess.run(hello))Hello, TensorFlow!>>> a = tf.constant(10)>>> b = tf.constant(32)>>> print(sess.run(a + b))42
b. 小试demo之MNIST的识别
一般pip自动安装tensorflow到ubuntu的默认python路径下面。默认情况下,路径是:/usr/local/lib/python2.7/dist-packages/tensorflow/usr/local/lib/python2.7/site-packages/tensorflow
要执行的MNIST识别例子的文件在models/image/mnist/convolutional.py
路径下. 运行如下代码进行自动训练
# 使用 'python -m' 可以自动在你的python路径下寻找该文件(可见路径由"."进行连接)$ python -m tensorflow.models.image.mnist.convolutionalExtracting data/train-images-idx3-ubyte.gzExtracting data/train-labels-idx1-ubyte.gzExtracting data/t10k-images-idx3-ubyte.gzExtracting data/t10k-labels-idx1-ubyte.gz...etc...
# 也可以不用-m,直接传递路径,如下:$ python /usr/local/lib/python2.7/dist-packages/tensorflow/models/image/mnist/convolutional.py...
就是这样,然后MNIST训练最终得到了如下的结果:
经过8500次的迭代,训练准确率达到99.2%
c. 稍微复杂一点的例子
先构件图,然后运行图。
1. 构件图:构建源op(常量op) --> 在default graph中使用op构造器-->制作自己的图。
$ python #进入python import tensorflow as tf# 创建一个常量节点加到默认图中.matrix1 = tf.constant([[3., 3.]])# 创建另外一个常量 op, 产生一个 2x1 矩阵.matrix2 = tf.constant([[2.],[2.]])# 创建一个矩阵乘法 matmul op , 把 'matrix1' 和 'matrix2' 作为输入.# 返回值 'product' 代表矩阵乘法的结果.product = tf.matmul(matrix1, matrix2)2. 运行图:创建会话“session”+启动图 --> 执行
# 建立会话session,启动默认图.sess = tf.Session()# 调用会话sess 的 'run()' 方法来执行# 传入 'product' 作为参数,'product' 代表了之前构件图的输出, 传入它是向方法表明, 我们希望取回矩阵乘法 op 的输出.## 整个执行过程是自动化的, 会话负责传递 op 所需的全部输入. op 通常是并发执行的. # 函数调用 'run(product)' 触发了图中三个 op (两个常量 op 和一个矩阵乘法 op) 的执行.## 返回值 'result' 是一个 numpy `ndarray` 对象. 如果在C/C++中,则返回tensorflow::Tensor 实例result = sess.run(product)print result# ==> [[ 12.]]# 任务完成, 关闭会话.sess.close()close是一定要close的,还有一种方法是使用with来自动调用close,如下:
with tf.Session() as sess:result = sess.run([product])print result
使用GPU,TensorFlow自动检测,尽量使用GPU。但当有两块显卡的时候,需要代码中分配GPU。
四. 理解
TensorFlow中最重要的是“图”的概念,用来表示Tensor的流动。在“图”中的节点称为“op”。
会话“session”是一个平台,在“图”的概念之上,图在会话之中运行。
Python的效率较低,因此矩阵运算都是利用Python执行C++代码这样的方式,但是会导致切换时效率很低,因此有了“图”的方式,一次性的在python外运行,避免来回切换。这种高级语言和超高级语言的有效结合很棒,人类接触超高级语言-"简单",机器接触高级语言-"快速"。
五. 交互式使用
上面的方法是写出来然后运行,还可以交互式运行,发生以下变化:
a. tf.Session ---> tf.InteractiveSession
b. run ---> initalize.run && eval()
六. 使用变量、feed
tf.constant tf.variable 这是Tensorflow中的常量和变量;同时Tensorflow还提供一种占位符,也就是一种空的Tensor,在程序中可以先用这个占位符代替具体的数据进行运算,然后在sess.run的时候再提供这个占位符具体的值。
参考文档
中文: http://www.open-open.com/lib/view/open1447242339210.html
英文: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/get_started/os_setup.md
- 汐月教育之理解TensorFlow(一)安装配置与基本使用
- 汐月教育之理解TensorFlow(二)基础理解
- 汐月教育之理解TensorFlow(四)词向量
- 汐月教育之理解TensorFlow(六)API记录
- 汐月教育之理解TensorFlow(五)调试工具
- 汐月教育之理解TensorFlow(三.2)构建全连接网络进行MNIST识别
- 汐月教育之理解TensorFlow(七)tensorflow_fold的学习
- 汐月教育之理解TensorFlow(三.1)构建简单的BP神经网络+softmax多分类进行MNIST识别
- TensorFlow学习笔记(一)安装、配置、基本用法
- TensorFlow学习笔记(一):快速安装与使用TensorFlow
- TensorFlow学习笔记(一):快速安装与使用TensorFlow
- 深度学习之TensorFlow实战一(安装配置篇)
- Gentoo使用之(一) 安装与配置(1)
- 【Tensorflow】Tensorflow安装与配置
- solr(一)安装与基本使用
- tensorflow学习笔记----一(基本使用)
- Tensorflow系列之(一):Tensorflow的基本操作
- tensorflow学习笔记(一)——tensorflow基本使用
- Android自定义View--加载动画
- -bash: ./mysql: /bin/bash^M: bad interpreter: No such file or directory 完美解决
- 文章标题
- 对游戏开发中虚拟摇杆的封装
- R语言读取数据空值
- 汐月教育之理解TensorFlow(一)安装配置与基本使用
- jquery插件--简单的分页插件
- C#学习之对象
- viewpager 无网络的时候滑动异常
- 可惜没如果
- Activity设置竖屏显示
- JavaScript 理解this对象
- 浮点数环境 cfenv(fenv.h)
- 理解AMD ,CMD,CommonJS规范