标签: 王小草Tensorflow笔记
前期准备:安装好tensorflow1.0
Tensorflow API概要
Tensorflow提供了很多API。
最底层的API是Tensorflow core,推荐给机器学习的研究者或者那些想对模型有更好的掌控的大神们用~
较高层的API是在Tensorflow core的基础上封装建立的,肯定比Tensorflow core要更易学,更易使用啦~另外,较高层的API使得一些重复性的任务也更简单,并且在不同使用者中也更稳定。
比如高层API中有tf.contrib.learn, 可以帮助你管理数据集,估计值,训练过程与接口。注意如果较高层API的名称中包含了contrib,表示还在升级开发中,有可能在以后的tensorflow版本中,有些方法会变化或者废弃。
本文先会使用Tensorflow core,然后使用tf.contrib.learn去实现同一个模型。知道Tensorflow core的规则,将对你在使用更高级API时理解模型内部的运行有很大的帮助~
数据单元:Tensors概要
在tensorflow中最核心的数据单元是tensor.一个tensor包含一系列原始值,这些值被放在Array中,可以是任何维度的。
tensor的Rank指的就是维度的数量。举几个例子:
3 # a rank 0 tensor, 这是一个shape[] 的标量
[1., 2., 3.] # a rank 1 tensor,表示有1层维度,是一个shape[3]的向量
[[1., 2., 3.],[1., 2., 3.]] # a rank 2 tensor, 表示2层维度, 是一个shap[2,3]的矩阵
[[[1., 2., 3.]],[[1., 2., 3.]]] # a rank 3 tensor, 表示有3层维度, shape[2,1,3]
Tensorflow Core 的使用小栗子
1. 导入tensorflow包
首先的首先,肯定要先导入tensorflow包,import tensorflow之后就给了Python 访问所有tensorflow 类,方法,符号的渠道了。
import tensorflow as tf
2. 构建与运行Tensorflow Graph
Tensorflow Core 程序主要包含独立的两个部分:
1. Building the computationnal graph 搭建计算图
2. Running the computationnal graph 运行计算图
computationnal graph 计算图 指的是将一些列tensorflow的操作作为graph的节点node,依照一定的先后步骤会形成一个计算图。
每一个节点将会以tensor作为输入, 然后产生一个新的tensor作为输出(在节点里做了一些运算)。节点的其中一个类型是常数constant,它没有输入,并且输出的就只是它存储的那个常数。
2.1 常数节点与运算
下面,我们来建立两个浮点类型的常数tensor:node1, node2。 在node1中,括号中第一个参数是常数值,第二个参数是常数的类型,如果不设置,默认也是float32(如Node2).
node1 = tf.constant(3.0, tf.float32)
node2 = tf.constant(4.0)
print(node1, node2)
打印结果:
(<tf.Tensor 'Const:0' shape=() dtype=float32>, <tf.Tensor 'Const_1:0' shape=() dtype=float32>)
上面给出了打印的结果,值得注意的是,打印的信息中并没有直接给出tensor中常数的值(3.0,4.0),只有shape, dtype等关于这个tensor的一些信息。因为此时我们只是构建了有两个节点的图,必须要在一个会话session中运行这个图,才会真正打印数值。
所以在运行图之前,需要建立一个Session对象,然后再引用它的.run方法去运行计算图,并且估计node1, node2。如下:
sess = tf.Session()
print(sess.run([node1, node2]))
打印结果:
[3.0, 4.0]
当然啦,我们可以通过组合tensor的操作节点去构建更复杂的计算图。如下,两个常数Node求和然后产生一个新的图:
node3 = tf.add(node1, node2)
print("node3:", node3)
print("sess.run(node3):", sess.run(node3))
打印结果:
('node3:', <tf.Tensor 'Add:0' shape=() dtype=float32>)
('sess.run(node3):', 7.0)
Tensorflow 还提供了一个功能叫TensorBoard, 可以可视化地展现计算图。