程序结构
图的定义及执行(程序独立的两个部分)
计算图:包含节点和边的网络。
①定义所有要使用的数据,即张量(tensor)对象(常量、变量、占位符)
②定义执行的计算,即运算操作对象(Operation Object,OP)
每个节点可以有零个或多个输入,但只有一个输出。网络中的节点表示对象(张量和运算操作),边表示运算操作之间流动的张量。
计算图定义神经网络的蓝图,但其中的张量没有相关的数值。
计算图的执行: 会话对象实现。会话对象封装了评估张量和操作对象的环境。真正实现运算操作,将信息从网络一层传递到另一层。不同张量对象的值仅在会话对象中被初始化、访问和保存。在此之前张量对象只被抽象定义,在会话中才被赋予了实际的意义。
具体步骤–定义计算图
以两向量相加为例:
1.计算图
2.图的定义的代码:
v_1 = tf.constant([1,2,3,4])# 向量
v_2 = tf.constant([2,1,5,3])#向量
v_add = tf.add(v_1,v_2)# 操作
3.在会话中执行这个图
with tf.Session() as sess:
print(sess.run(v_add))
4. 3的等价
sess = tf.Session()
print(sess.run(v_add))
sess.close()
3的优点是不必显示写出关闭会话的命令
解读
图的构建:
step1:添加变量和操作
step2:按照逐层建立的神经网络的顺序传递(让张量流动)
with tf.device()可选择设备