Tensorflow notes
Tensorflow计算模型——计算图
概念:Tensorflow是一个通过计算图的形式来表述计算的编程系统。Tensorflow中的每一个计算都是计算图上的一个节点,而节点之间的边描述了计算之间的依赖关系。
使用:TensorFlow程序一般可以分为两个阶段,第一个阶段需要定义计算图中所有的计算;第二个阶段为执行计算。在Tensorflow程序中,系统会自动维护一个默认的计算图,通过tf.get_default_graph函数可以获取当前默认的计算图。除了使用默认的计算图,Tensorflow支持通过tf.Graph函数生成新的计算图。不同计算图上的张量和运算不会共享。
Tensorflow数据模型——张量
概念:在Tensorflow程序中,所有的数据都通过张量的形式来表示。从功能的角度上看,张量可以被简单理解为多维数组。其中零阶张量表示标量,也就是一个数;第一阶张量为向量;第n阶张量可以理解为一个n维数组。在张量中并没有真正保存数字,它保存的是如何得到这些数字的计算过程。
使用:第一类是对中间计算结果的引用,当一个计算包含很多中间结果时,使用张量可以大大提高代码的可读性;第二类是当计算图构造完成之后,张量可以用来获得计算结果(tf.Session().run(result))。
Tensorflow运行模型——会话
概念:会话拥有并管理TensorFlow程序运行时的所有资源。当所有计算完成之后需要关闭会话来帮助系统回收资源。
使用:一种模式需要明确调用会话生成函数和关闭会话函数
#创建一个会话
sess = tf.Session()
#使用这个创建好的会话来得到关心的运算结果
sess.run(...)
#关闭会话使得本次运行中使用到的资源可以释放
sess.colse()
另一种模式是TensorFlow使用Python的上下文管理器来使用会话:
#创建一个会话,并通过Python上下文管理器来管理这个会话
with tf.Session() as sess:
#使用这个创建好的会话来计算关心的结果
sess.run(....)
#不再需要调用Sess.close()函数来关闭函数
TensorFlow不会自动生成默认的会话,而是需要手动指定,当默认的会话被指定之后可以通过tf.Tensor.eval函数来计算一个张量的取值。
以下代码可以完成相同的功能
sess = tf.Session()
print(sess.run(result))
print(result.eval(session=sess))
在交互式环境下,通过设置默认会话的方式来获取张量的取值更加方便。tf.InteractiveSession会自动将生成的会话注册为默认会话。
sess = tf.InteractiveSession()
print(result.eval())
sess.close()
神经网络参数与TensorFlow变量
在TensorFlow中,变量(tf.Variable)的作用就是保存和更新神经网络中的参数,需要指定初值
w = tf.Variable(tf.random_normal([2, 3]), stddev=2)
TensorFlow随机数生成函数
函数名称 随机数分布 主要参数
tf.random_normal 正太分布 平均值、标准差、取值类型
tf.truncated_normal 正太分布,但如果随机出来的值偏离平
均值超过2个标准差那个这个数将会被重新随机 。 同上
tf.random_uniform 平均分布 最小、最大取值,取值类型
tf.random_gamma Gamma分布 形状参数alpha、尺度参数 beta、取值类型
TensorFlow常数生成函数
函数名称 功能 样例
tf.zeros 产生全0的数组 tf.zeros([2, 3], int32)
tf.ones 产生全1的数组 tf.ones([2, 3], int32)
tf.fill 产生一个全部为给定数字的数组 tf.fill([2, 3], 9)
tf.constant 产生一个给定值得常量 tf.constant([1, 2, 3])
使用tf.initialize_all_variables实现初始化所有的变量
init_op = tf.initialize_all_variables()
sess.run(init_op)
TensorFlow提供了placeholder机制用于提供输入数据。相当于定义了一个位置,这个位置中的数据在程序运行时再指定,这样在程序中就不需要生成大量常量来提供输入数据,而只需将数据通过placeholder传入TensorFlow计算图。
训练神经网络的步骤:
1. 定义神经网络的结构和前向传播的输出结果;
2. 定义损失函数以及选择反向传播优化的算法;
2. 生成会话,并且在训练数据上反复运行反向传播优化算法。
激活函数:
目前tensorflow提供了七种不同的非线性激活函数,tf.nn.relu、tf.sigmoid和tf.tanh是其中比较常用的。
损失函数:

浙公网安备 33010602011771号