TensorFlow实战Google深度学习框架第二版学习总结-TensorFlow入门

本文内容主要针对第三章作知识总结
概述:TensorFlow的工做原理分为计算模型,数据模型和运行模型三部分。
1.TensorFlow计算模型-计算图
1.1计算图模型
tensorflow经过计算图的形式来表达计算的编程系统,其中那个tensorflow中的每个计算都是计算图上的一个节点,而节点之间的边描述了计算之间的依赖关系。下图是典型的计算图模型
TensorFlow计算图模型
1.2计算图使用
tensorflow程序通常分为两个阶段,第一个阶段是定义计算图中全部的计算,第二个阶段时执行计算经过默认的计算图函数能够得到默认的计算图,线面代码演示了如何得到默认的计算图以及如何查看所属的计算图:node

print(a.grapy is tf.get_default>graph)python

除了默认的计算图,能够经过tf.Graph来生成新的计算图。注意,新生成的计算图上的张量(能够理解成数据)和运算不共享。以下面的代码最后输出的结果分别是0和1.web

import tensorflow as tf
g1 = tf.Graph()
with g1.as_default():
    v = tf.get_variable("v", [1], initializer = tf.zeros_initializer()) # 设置初始值为0
    g2 = tf.Graph()
with g2.as_default():
    v = tf.get_variable("v", [1], initializer = tf.ones_initializer())  # 设置初始值为1
with tf.Session(graph = g1) as sess:
    tf.global_variables_initializer().run()
    with tf.variable_scope("", reuse=True):
        print(sess.run(tf.get_variable("v")))
with tf.Session(graph = g2) as sess:
    tf.global_variables_initializer().run()
    with tf.variable_scope("", reuse=True):
        print(sess.run(tf.get_variable("v")))

2.TensorFlow计算模型-张量
张量是tensorflow管理数据的形式,全部的数据都是经过张量的形式来表示,功能上讲,张量能够被简单的理解为多维数据,零阶张量表示标量,也就是一个数,第一阶张量为向量,也就是一维数组,第n阶张量能够理解是一个n为数据。编程

import tensorflow as tf
a = tf.constant([1.0, 2.0], name="a")
b = tf.constant([2.0, 3.0], name="b")
result = a + b
print result

sess = tf.InteractiveSession ()
print(result.eval())
sess.close()

代码的输出结果是Tensor(“add:0”, shape=(2,), dtype=float32)
并无输出加法的结果,只是一个结果的引用,即时张量的结构。从张量的结构中能够看出,张量第一个属性不只是张量的惟一标识符,一样给出了张量的技术过程,以node:src_output形式给出,add是节点名称,0表示节点是第几个输出的。第二个属性是张量的维度,shape(2,)表示是一个一维数组,长度是2。第三个属性是类型。
这里注意张量自己没有存储具体的数字,只有经过会话才能获得具体的数值。数组

3.TensorFlow计算模型-会话
会话拥有并管理tensorflow程序运行时的全部资源,因此计算完成以后须要关闭会话俩帮助系统回收资源,不然会出现内存泄漏的问题。tensorflow通常使用python上下文管理器来使用会话,只要将全部的计算放在with的内部,当上下文管理器退出的时候会自动释放全部的资源。svg

with tf.Session() as sess:
    print(sess.run(result))