1. Tensors
重要概念:
tensor: 张量,由从原始数据变换到任意维矩阵的集合。
rank: 秩,是tensor的维度
scalar标量的rank是0
Session:会话,在session的context中执行图
fetch:为操作取回数据,如果多个,放在[]组成array
feed_dict:提供数据,最常见是为placeholder提供
placeholder:占位,承诺后面会提供值
Variables:变量,初始时没有初始化,需要明确调用初始化操作:sess.run(tf.global_variables_initializer())
2. Tensorflow流程
可以认为tensorflow流程由两大部分组成:
1. 建立计算图流程
2. 跑计算图流程
计算图由一系列用node节点表示的操作算子组成,每一个node节点可以有0维或以上tensor输入,并且也生成一个tensor作为输出。常量constant节点没有输入,输出它存储的值。
node1 = tf.constant(3.0, dtype=tf.float32)
node2 = tf.constant(4.0) # also tf.float32 implicitly
print(node1, node2)
result: Tensor("Const:0", shape=(), dtype=float32) Tensor("Const_1:0", shape=(), dtype=float32)
如果要查看node节点的值,我们需要在session中跑run。session中封装了tensorflow控制和状态
sess = tf.Session()
print(sess.run([node1, node2])
Tensorflow流程:
1. 建立模型参数
2. 建立模型的输入和输出
3. 建立损失函数
4. 选择优化算子,如梯度下降等
5. 设置训练数据
6. 建立会话,进行训练
7.结束训练,输出模型参数
3. tf.contrib.learn
tf.contrib.learn库里面包含了很多机器学习算法,可以简化流程,它的流程如下:
1. 声明特征feature列表
2. 选择训练模型
3. 设置训练数据和评价数据,需要说明有多少组数据
epochs: ?An epoch means using the whole data you have
steps: ? A step means using a single batch data
参考:https://stackoverflow.com/questions/43454004/what-is-the-difference-between-num-epochs-and-steps/43456311
4. 进行模型训练
5. 评价模型损失函数