TensorFlow - 基础笔记
自学TensoFlow,备忘笔记
TensorFlow - 基础笔记
1 概念
1.1 TensorFlow基本概念
TensorFlow包含以下主要元素
- graph
- 表示计算
- 一个graph包含若干节点,即op ( operation)
- op
- graph的节点
- 输入/输出为0或n个tensor
- Session
- 执行graph
- tensor
- 表示数据
- 例如:a mini-batch of images可表示为4-D array,
[batch, height, width, channels]
- Variable
- 维护状态信息
- feed / fetch
- feed 数据传入
- fetch 数据传出
1.2 TensorFlow过程原理
- 打开Session;
- Session启动graph;
- Session将graph的节点ops(operation)分发到可用的设备上,如CPUs/GPUs,并提供执行op的methods;
- op收到0或n个tensor后执行methods以计算,methods执行后,输出的相应的0或n个tensor
注:
- 在Python 语言中, 将返回numpy的ndarray 对象; 在C 和C++ 语言中, 将返回tensorflow::Tensor实例。
2 TensorFlow编程
2.1 两个阶段
TensorFlow程序通常包含以下两个阶段:
- construction phase 构建阶段,组装出graph
- execution phase 执行阶段,用Session执行graph的ops
2.2 构建图并执行
1 | import tensorflow as tf |
- TensorFlow事实上通过一个“翻译”过程,将定义的graph转化为不同的可用计算资源间实现分布计算的操作(op, operations),如:CPU或GPU。通常不需要用户指定具体使用的CPU或GPU,TensorFlow能自动检测并尽可能的充分利用找到的第一个GPU进行运算。
2.3 指定设备
1 | with tf.Session() as sess: |
- 通过
tf.device(...)
指定用于执行的设备
设备字符串:
"/cpu:0"
- 1st CPU, 即设备的CPU
"/gpu:0"
- 1st GPU, 即设备的GPU
"/gpu:1"
- 2nd GPU, 即设备的第二块GPU(如果有)
- 以此类推...
2.4 Tensor
TensorFlow程序使用tensor数据结构来代表所有的数据,计算图中,ops(operations)之间传递的数据都是tensor。
你可以把tensor看作是一个n维的数组或列表。一个tensor包含一个static type
,
一个rank
和一个shape
。
2.5 Variable
Variable维持graph执行过程中的状态信息。
例如,使用Variable实现一个计数器(Counter):
1 | state = tf.Variable(0, name="counter") |
2.6 Fetch
1 | input1 = tf.constant(3.0) |
- Fetch both
mul
's result andintermed
's result.
2.7 Feed
1 | input1 = tf.placeholder(tf.float32) |
- 使用
tf.placeholder(...)
来创建占位符,用于直接给op传入一个tensor
TensorFlow also provides a feed mechanism for patching a tensor directly into any operation in the graph.