开发者学堂课程【深度学习框架 TensorFlow 入门:会话的介绍】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/773/detail/13541
会话的介绍
内容介绍
一、会话
二、初始化对象时的参数
三、会话的 run()
四、feed 操作
一、会话
一个运行 TensorFlow operation 的类,会话包含以下两种开启方式
tf.Session:用于完整的程序当中
tf.InteractiveSession:用于交互式上下文中的 TensorFlow,例如 shell
1、TensorFlow 使用 tf.Session 类来表示客户端程序(通常为 Python 程序,但也提供了使用基他语言的类似接口)与C++运行时
之间的连接
2、tf.Session 对象使用分布式 TensorFlow 运行时提供对本地计算机中的设备和远程设备的访问权限。
二、初始化对象时的参数
_init_ (target=", graph=None, config=None)
会话可能拥有的资源,如 tf.Variable, tf.QueueBase和 tf.ReaderBase。 当这些资源不再需要时,释放这些资源非常重要。
因此,需要调用 tf.Session.close 会话中的方法,或将会话用作上下
文管理器。以下两个例子作用是一样的:
def session. demo():
“”“
会话演示
:return:
““”
a_t = tf.constant(10)
b_t = tf.constant(20)
#不提倡直接运用这种符号运算符进行计算
#更常用 tensorf Low 提供的函数进行计算
#c_t-a_t+b_t
c_t = tf.add(a _t, b _t)
print("tensorflow 实现加法运算:\n", c_ t)
#开启会话
#传统的会话定义
# sess = tf.Sess ion()
# sum_t =sess.run(c _t)
# print("sum_ t:\n", sum_t)
# sess.close()
#开启会话
with tf.Session() as sess:
# sum_t = sess.run(c. _t)
#想同时执行多个tensor
print(sess.run([a_t, b_t, c_t]))
#方便获取张量值的方法
# print("在sess 当中的 sum_ t:\n",c_ t.eval())
#会话的图属性
print("会话的图属性: \n", sess.graph)
return None
target: 如果将此参数留空(默认设置),会话将仅使用本地计算机中的设备。可以指定 grpc://网址,以便指定 TensorFlow 服务器的地址,这使得会话可以访问该服务器控制的计算机上的所有设备。
graph: 默认情况下,新的 tf.Session 将绑定到当前的默认图。
config: 此参数允许您指定一个 tf.ConfigProto 以便控制会话的行为。例如,
ConfigProto 协议用于打印设备使用信息
代码如下:
#运行会话并打印设备信息
sess = tf. Session(config=tf.Conf igProto(allow_ soft_ placement=True ,
log_ device_ placement=True))
会话可以分配不同的资源在不同的设备上运行。
/job: worker/replica:0/task:0/device:CPU:0
device_type:类型设备(例如CPU,GPD,TPU)
三、会话的 run()
run(fetches,feed_ dict=None, options=None, run_metadata=None)
通过使用 sess.run()来运行operation。
fetches: 单一的 operation, 或者列表、元组(其它不属于 tensorflow 的类型不行)。
feed_ dict: 参数允许调用者覆盖图中张量的值,运行时赋值。
与 tf.placeholder 搭配使用, 则会检查值的形状是否与占位符兼容。
使用 tf.operation.eval()也可运行 operation,但需要在会话中运行
#创建图
a = tf.constant(5.0)
b=tf.constant(6.0)
c=a*b
#创建会话
sess=tf.Session()
#计算 C 的值
print(sess. run(c))
print(c. eval(session=sess))
四、feed操作
placeholder 提供 占位符,run 时候通过 feed_dict 指定参数
def session_ run. demo():
“””
会话的 run 方法: return:
“””
#定义占位符
a = tf.placeholder(tf. float32)
b = tf.placeholder(tf. float32)
sum_ ab = tf.add(a, b)
print("sum_ ab:\n", sum_ ab)
#开启会话
with tf.Session() as sess:
print("占位符的结果:
\n",sess. run(sum_ ab, feed_ dict={a: 3.0, b:4.0}))
turn None
请注息运行时候报的错误error:
RuntimeError: 如果这 Session 是无效状态(例如已关闭)。
TypeError: 如果 fetcheste 或者 feed_dict 键的类型不适合。
ValueError: 如果 fetches 或 feed_dict 键无效或引用 Tensor 不存在的键。