TensorFLow笔记(⼀):计算图和Session会话TensorFlow基本概念
TensorFlow是⼀个编程系统,使⽤计算图(graph)来表⽰计算任务,计算图的节点称之为op(operation),⼀个op获得0个或者多个张量(tensor),节点与节点之间的连线则代表计算之间的依赖关系。Tensor看作是⼀个n维的数组或者列表。计算图必须在会话(Session)⾥被启动。
使⽤计算图(Graph)来表⽰计算任务
在被称之为会话(Session)的上下⽂(context)中执⾏计算图
使⽤张量(tensor)表⽰数据
通过变量(Variable)维护状态
使⽤feed和fetch可以为任意的操作复制或者从其中获取数据
计算图(graph)
在TensorFlow中已经存在⼀个默认计算图,如果没有新创建计算图,那么创建的节点和边会默认⽣成在这个计算图中。
import tensorflow as tf
num_1 = tf.constant([1])
num_2 = tf.constant([2])
result = tf.add(num_1,num_2)
在上述代码中,就存在三个⼏点,两个constant()和⼀个add()。
但是现在的情况下,并⽆法使⽤使⽤,需要在会话中启动。
会话(Session)
要启动计算图,⾸先需要创建⼀个Session对象。
使⽤tf.Session()创建会话,调⽤run()执⾏计算图。如果没有传⼊任何参数,将会启动默认图。创建会话通常有三种⽅式:
创建⽅式⼀
sess = tf.Session()
result_value = sess.run(reult)
print(result_value)
#任务结束,关闭会话
sess.close()
这种⽅式下创建会话,在使⽤完之后,需要调⽤close()函数⼿动释放资源,因此第⼆种创建⽅式将会显得更加优雅便捷。
创建⽅式⼆
with tf.Session()as sess:
result_value = sess.run(result)
print(result_value)
这种⽅式下,创建的会话,在使⽤完之后,会⾃动关闭当前会话。
创建⽅式三
在交互式环境下(如jupyter、IPython),使⽤设置默认会话的⽅式更加⽅便。tf.InteractiveSession()函数会⾃动将⽣成的会话注册为默认会话,使⽤eval()代替run()
sess = tf.InteractiveSession()
result_value = result.eval()
print(result_value)
sess.run()
多个计算图的使⽤⽅式
在TensorFlow中可以创建多个计算图,计算图之间的节点和边不会共享,这样就可以在同⼀个项⽬中构建多个⽹络模型或者其他操作,⽽且不相互影响。
variable怎么记
# 构建计算图g1
g1 = tf.Graph()
with g1.as_default():
# 在计算图g1中定义变量'v',并设置初始值为0。
v = tf.get_variable('v',s_initializer()(shape =[1]))
# 构建计算图g2
g2 = tf.Graph()
with g2.as_default():
# 在计算图g2中定义变量'v',并设置初始值微1。
v = tf.get_variable('v',s_initializer()(shape =[1]))
# 在计算图g1中读取变量'v'的取值
with tf.Session(graph = g1)as sess:
tf.global_variables_initializer().run()
with tf.variable_scope('',reuse =True):
print(sess._variable('v')))
# 输出结果[0.]
# 在计算图g2中读取变量'v'的取值
with tf.Session(graph = g2)as sess:
tf.global_variables_initializer().run()
with tf.variable_scope('',reuse =True):
print(sess._variable('v')))
# 输出结果[1.]。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。