tensorflow 一
一、基本概念
1、stochastic gradient descent(SGD):随机梯度下降,不是每次迭代参数的计算都使用全部的数据,而是取一部分(一个patch)进行计算。
2、epoch:把所有训练数据完整的过一遍。
3、step_num:过一遍需要的训练的次数。
4、patch:每次进行梯度训练时,使用的数据子集
5、泛逼近定理 “Universal approximation theorem”, 一个隐藏层可以任意逼近连续函数
二、tensorflow基础
1、用计算图描述分布式计算任务,每个session有个默认graph
2、op 是graph的节点,描述计算操作
3、常量是op,取数据也是op
4、placeholder 实现类似于模板渲染的效果,每次迭代时可以塞入数据集
5、variable 用于在不同的run周期中保持变量,可以用来存神经网络的权值
三、API
reduce_sum 求和,默认所有数据, 0表示按着列计算, 1表示按着行
reduce_max 求最大值
reduce_mean 均值
truncated_normal 截断的正态分布, stddev是标准差
sparse_softmax_cross_entropy_with_logits 把softmax计算与cross entropy计算放到一起,用来提高程序的运行速度
nn.in_top_k() 判断预测结果是否正确。函数本来的意义为判断label是不是在logits 的前k大的值,返回一个布尔值。
四、各个模块
TensorBoard 可视化计算图,计算状态,有web的ui
tf.contrib.learn 高层的模块,实现数据集、填充、训练、评估等功能
模型中间结果的保存和恢复
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
all_saver.save(sess, 'data.chkp')
模型的权重是保存在 .chkp 文件中,模型的图是保存在 .chkp.meta 文件中。
saver = tf.train.import_meta_graph('results/model.ckpt-1000.meta')
graph = tf.get_default_graph()
global_step_tensor = graph.get_tensor_by_name('loss/global_step:0')
train_op = graph.get_operation_by_name('loss/train_op')
hyperparameters = tf.get_collection('hyperparameters')
with tf.Session() as sess:
# To initialize values with saved data
saver.restore(sess, 'results/model.ckpt-1000-00000-of-00001')
print(sess.run(global_step_tensor)) # returns 1000