0. Tensorflow libraries
- TF Learn (tf.conrtib.learn): simplified interface that transits tf to scikit-learn
- TF Slim (tf.contrib.slim): lightweight library for defining, training and evaluating complex models
- High level API: Keras, TFLearn
1. Graph and session
TF将模型定义过程和计算过程分开了
所以使用过程可以分为如下两步
1. 整合Graph(模型定义)
2. 使用session执行Graph中的操作
1.1 Tensor是什么
n维矩阵(n-d matrix)
0-d : number
1-d : vector
2-d : matrix
1.2 Graph
import tensorflow as tf
a=tf.add(3,5)
这段代码会构建一个如下的Graph,graph即对应了计算过程。但是不会执行计算3+5。
在计算图中,
节点是 operators, variables, and constants
边代表 tennsors
1.3 Session
必须实例化一个Session,才能让graph执行计算。
Session负责读取数据送入到graph。
import tensorflow as tf
a = tf.add(3, 5)
sess = tf.Session()
print(sess.run(a))
sess.close()
//or
with tf.Session() as sess:
print(sess.run(a))
Session只会计算graph中,指定的计算节点需要的部分。
解释如下,在下图的graph中,Session只会执行红色部分。在Session.run()语句执行之前graph已经建好。
sess.run([pow_op, useless]) 会执行全部graph
1.4 Subgraphs
使用多个GPU的实例代码如下
# To put part of a graph on a specific CPU or GPU:
# Creates a graph.
with tf.device('/gpu:2'):
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], name='b')
c = tf.multiply(a, b)
# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
# Runs the op.
print(sess.run(c))
1.5 MultiGraph
假设同一个任务有多个模型graph需要同时训练。