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版本。
- 安装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])))"
- 安装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中执行。
会话的作用:
- 运行图的结构
- 分配资源计算,决定graph在什么设备上运行
- 掌握资源(变量的资源、队列、线程)
会话对象,我们可以执行创建、运行和关闭等操作。
示例代码:
s = tf.Session()
s.run()
s.close()
会话是graph的上下文环境,只要有Session就有上下文环境。