- TensorFlow是一个 描述机器学习算法 和 实现机器学习算法的接口。
- 图计算编程模型:
中心思想是 将数值运算以图的形式描述。
1)图的节点是某种运算,支持任意数量的输入和输出;
2)图的边是tensor(张量,n维数组),在节点之间流动。
变量:variable。w和b是变量,变量通常是模型的参数。变量可以存储下来,作为模型的一部分发布。
占位符:placeholder。例如x。只在执行的时候填充输入,编程的时候指定大小即可。
运算单元: - 描述计算图
1)Create weights, including initialization
W ~ Uniform(-1, 1) ; b = 0
2)Create input placeholder x
m * 784 matrix
3)Build flow graph
import tensorflow as tf
b = tf.Variable(tf.zeros((100, )))
W = tf.Variable(tf.random_uniform((784, 100), -1, 1))
x = tf.placeholder(tf.float32, (100, 784))
h = tf.nn.relu(tf.matmul(x, W) + b)
TensorFlow根据数学表达式自动构造运算图。
4. 执行
通过session将图部署到某个执行环境(CPU、GPU等)
session就是到某个软硬件执行环境的绑定。
sess = tf.Session()
sess.run(tf.initialize_all_variables())
sess.run(h, {x: np.random.random(100, 784)})
sess.run(fetches.feeds)的说明:
fetches:是一系列图节点(or称为 变量)。因为图是联通的,给一个节点 即可找到所有节点。
feeds:是一个从placeholder到其输入值的映射。
英文解释
Getting output
sess.run(fetches, feeds)
Feeds:Dictionary mapping from graph nodes to concrete values.
Specifies the value of each graph node given in the dictionary
5. 训练模型
5.1 定义损失
用变量定义损失,用placeholder定义label。
prediction = tf.nn.softmax(...) # Output of neural netword
label = tf.placeholder(tf.float32, [100, 10])
cross_entroy = -tf.reduce_sum(label * tf.log(prediction), axis=1)
5.2 计算梯度
先初始化一个optimizer, 然后在图中损失函数节点后面添加一个优化操作(最小化,也是一种运算节点)
train_step = tf.tfain.GradientDescentOptimizer(0.5).minize(cross_entropy)
代码中是这样调用的
Training the Mode
sess.run(train_step, feeds)
1)Create Session
2)Build training schedule
3)Run train_step
sess = tf.Session()
sess.run(tf.initialize_all_variables())
for i in range(1000):
batch_x, batch_label = data.next_batch()
sess.run(train_step, feed_dict={x: batch_x,
label: batch_label}
5.3 资源共享
有时想要 生成一张图的多个实例 or 在多个GPU上训练同一个模型,
所以 实现同一个变量在不同位置出现/ 如何在不同位置共享同一个变量?
TF支持命名空间
with tf.variable_scope("foo"):
v = tf.get_variable("v", shape=[1]) # v.name == "foo/v:0"
with tf.variable_scope("foo", reuse=True):
v1 = tf.get_variable("v")) # Shared variable found!
with tf.variable_scope("foo", reuse=False):
v1 = tf.get_variable("v")) # CRASH foo/v:0 already exists!
- TF用法总结:
1)创建图
1.1)前向传播/预测
1.2)优化操作
2)初始化session
3)在session中执行
本文详细介绍TensorFlow的基础概念,包括图计算模型、变量、占位符和运算单元的使用。并通过实例演示如何构建计算图,执行session进行模型训练,以及资源在多GPU间的共享策略。

437

被折叠的 条评论
为什么被折叠?



