文章目录
最近在看的一本书,蒋子阳《TensorFlow深度学习算法原理与编程实战》的学习笔记(一)
TensorFlow 基础
tf以计算图为基础,整个计算过程包括 ① 构建图 ②执行图
TensorFlow首先创建一个骨架图,里面包含所有组件,此时没有数据和计算的产生,只有当会话执行时,数据进入图中进行流动,才有实际的结果产生。
tf的三个模型:
计算图 – 计算模型
图:是相互连接的实体的集合,通常称为节点node,节点通过边edge连接
TensorFlow中的图的每一个节点表示一个操作,并可应用在某个输入或生成传递给其他节点的输出
依赖关系:一个节点的输入取值于另一个节点的输出,那么这两个节点具有依赖关系。存在依赖关系的节点通过边相互连接。
张量(tensor)就是在边中流动(flow)的数据,这也是TensorFlow名称的由来。此外,存在一种不流动数据的边,它们起着依赖控制(control dependencies)作用,让起始节点执行完后才执行下一个目标节点,但中间没有数据传输。
创建图
eg.定义一个简单的graph。 a b相乘得到c, d等于c的正弦,e等于b d的商
import tensorflow as tf
a = tf.constant(5,tf.float32) # 定义常量
b = tf.constant(10,tf.float32)
print(b) # Tensor("Const_1:0", shape=(), dtype=float32) 名称为const_1:0的tensor对象,类型是float32
c = b*a # c = tf.mul(a,b) c定义了这个乘法操作
d = tf.sin(c)
e = b / d
with tf.Session() as sess: # 使用with语句打开会话可以保证计算完成后将会话自动关闭,否则使用sess.close()操作
fetches = [a,b,c,d,e]
out1 = sess.run(fetches) # sess.run可以同时计算多个节点列表 sess.run参数称为fetches(提取),将节点传入参数,用来计算该节点的值
# TensorFlow仅利用依赖关系的集合来计算节点 例如,e依赖 b和d,则通过b d计算e
outs = sess.run(e)
print(out1,type(out1),out1[0])
tf的计算图
导入tf的时候,会自动生成一个空白图,后续的操作都与该默认图关联。
可以通过tf.Graph()创建一个新的空白图,并可以自定义操作与它关联。任何一个节点都可以通过graph属性查看是否属于某个图
import tensorflow as tf
print(tf.get_default_graph()) #默认空白图
g = tf.Graph()
print</