tensorflow介绍

  • tensorflow介绍
  • tensorflow安装
  • 类型选择
  • 创建隔离环境
  • Mac下安装
  • Ubuntu和Linux
  • tensorflow基本介绍
  • tensor
  • op
  • graph
  • Session


tensorflow介绍

TensorFlow由谷歌人工智能团队谷歌大脑(Google Brain)开发和维护的一个深度学习框架。

tensorflow = tensor + flow,也就是有向数据流,我们使用tensorflow就是构建一个数据流图,然后执行该图。

tensorflow数据流图核心要素:

  • 张量:tensor,数据就是张量
  • 节点:operation(op),所有的运算操作都是一个op
  • 图:graph,整个程序的结构就是一个graph,定义了整个程序的框架
  • 会话:session,用来运行图

说明:

  • tensorflow是一个计算密集型的框架主要是cpu/gpu计算,所以跑tensorflow代码是需要有好的硬件资源的,尤其是GPU资源;
  • 如django/scrapy等框架是IO密集型框架,主要是磁盘操作;

tensorflow Playground

google为我们提供了一个tensorflow在线演示环境tensorflow Playground

tensorflow安装

类型选择

必须选择以下类型的TensorFlow之一来安装:

  • TensorFlow仅支持CPU支持。如果您的系统没有NVIDIA®GPU,则必须安装此版本。请注意,此版本的TensorFlow通常会更容易安装(通常在5或10分钟内),因此即使您有NVIDIA GPU,我们建议先安装此版本。
  • TensorFlow支持GPU。TensorFlow程序通常在GPU上比在CPU上运行得更快。因此,如果您的系统具有满足以下所示先决条件的NVIDIA®GPU,并且您需要运行性能关键型应用程序,则应最终安装此版本。

创建隔离环境

基于virtualenv创建隔离环境

mkvirtualenv -p python3.6 tensorflow

基于conda创建隔离环境

conda create -n tensorflow python=3.6

Mac下安装

mac下因为硬件原因,只好安装cpu版本。

  1. 安装Tensorflow

安装最新版本

pip install --upgrade tensorflow

安装指定版本

pip install tensorflow==1.14.0

验证安装指令

python -c "import tensorflow as tf; tf.enable_eager_execution(); print(tf.reduce_sum(tf.random_normal([1000, 1000])))"
  1. 安装tensorboard

tensorboard是tensorflow提供的可视化界面,建议和tensorflow安装一样的版本。

安装最新版本

pip install --upgrade tensorboard

安装指定版本

pip install tensorboard==1.14.0

Ubuntu和Linux

如果要安装GPU版本的,需要安装一大堆NVIDIA软件(不推荐):

  • CUDA®Toolkit 8.0。有关详细信息,请参阅 NVIDIA的文档。确保您将相关的Cuda路径名附加到 LD_LIBRARY_PATH环境变量中,如NVIDIA文档中所述。 与CUDA Toolkit 8.0相关的NVIDIA驱动程序。
  • cuDNN v5.1。有关详细信息,请参阅 NVIDIA的文档。确保CUDA_HOME按照NVIDIA文档中的描述创建环境变量。
  • 具有CUDA Compute Capability 3.0或更高版本的GPU卡。有关支持的GPU卡的列表,请参阅 NVIDIA文档。
  • libcupti-dev库,即NVIDIA CUDA Profile Tools界面。此库提供高级分析支持。要安装此库,请发出以下命令:

使用pip安装,分别有2.7和3.6版本的

# 仅使用 CPU 的版本
$  pip install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.1-cp27-none-linux_x86_64.whl
$  pip3 install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.1-cp36-cp36m-linux_x86_64.whl

tensorflow基本介绍

tensor

tensorflow graph中的数据都是张量。

示例代码:

import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'

b = [[1,2,3],[4,5,6]]
c = [[7,8,9],[10,11,12]]

# 张量合并
d = tf.concat([b,c], axis=0)

with tf.Session() as sess:
    print(d.eval())

运行结果如下:

Tensor("Const:0", shape=(), dtype=float32)
Tensor("Add:0", shape=(), dtype=float32)

我们看到结果都是Tensor对象。

op

只要使用tensorflow的API定义的函数都是op,如constant()、add(),tensorflow的op非常丰富。

graph

tensorflow有一个默认图,如果我们不指定图的话,默认就是在默认图上运行的。

默认图

如果我们不指定图的话,我们使用的是Tensorflow的默认图,它会自动调用graph = tf.get_default_graph(),相当于给程序分配一段内存,我们所有的Tensor、op都是在这张图上。

示例代码:

import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'

# 新建2个tensor
a = tf.constant(1.0)
b = tf.constant(2.0)
# 新建1个op
sum = tf.add(a,b)

print(a.graph)
print(b.graph)
print(sum.graph)

# 默认图
graph = tf.get_default_graph()
print(graph)

with tf.Session() as sess:
    # 查看会话所在图
    print(sess.graph)

运行结果如下:

<tensorflow.python.framework.ops.Graph object at 0x1114caf98>
<tensorflow.python.framework.ops.Graph object at 0x1114caf98>
<tensorflow.python.framework.ops.Graph object at 0x1114caf98>
<tensorflow.python.framework.ops.Graph object at 0x1114caf98>
<tensorflow.python.framework.ops.Graph object at 0x1114caf98>

通过运行结果,我们发现tensor、op和session都在一个图上,也就是系统的默认图。with tf.Session() as sess:相当于with tf.Session(graph=g) as sess:

自定义图

默认使用的是tensorflow默认图,我们也是可以自定义图。

示例代码:

import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'

# 创建图
g = tf.Graph()

# 使用自定义的图
with g.as_default():
    pass

Session

session是一个会话,tensorflow的graph都必须在Session中执行。

会话的作用:

  1. 运行图的结构
  2. 分配资源计算,决定graph在什么设备上运行
  3. 掌握资源(变量的资源、队列、线程)

会话对象,我们可以执行创建、运行和关闭等操作。

示例代码:

s = tf.Session()
s.run()
s.close()

会话是graph的上下文环境,只要有Session就有上下文环境。