会话的介绍|学习笔记

简介: 快速学习会话的介绍

开发者学堂课程【深度学习框架 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 不存在的键。

相关文章
|
5月前
|
存储 编解码 应用服务中间件
会话跟踪技术(Session 以及Cookie)
会话跟踪技术(Session 以及Cookie)
|
6月前
|
存储 缓存 搜索推荐
session 详解:掌握客户端会话管理
session 详解:掌握客户端会话管理
|
6月前
|
存储 编解码 安全
会话跟踪技术(cookie&&session)
Cookie和Session是在Web开发中常用的两种技术,用来跟踪和存储用户相关的信息
97 2
会话跟踪技术(cookie&&session)
|
6月前
会话跟踪技术概述及Cookie基本使用
会话跟踪技术概述及Cookie基本使用
54 0
|
存储
11JavaWeb基础 - 会话简介
11JavaWeb基础 - 会话简介
34 0
|
应用服务中间件 API
Session 会话
Session 会话
101 0
会话保持技术:cookie、session
1.概述 会话保持技术的出现是因为HTTP 是一个无状态的协议,这一次请求和上一次请求是没有任何关系的,互相无法感知,上一次请求干了什么?这一次请求完全不知道,会话保持技术就是为了以一种第三方的设计实现http请求之间的联系,让请求之间能够相互感知。 目前的两大会话保持技术:
128 0
|
存储 Java 应用服务中间件
客户端会话跟踪技术 Cookie 浅谈
客户端会话跟踪技术 Cookie 浅谈
139 0
|
负载均衡 网络协议 开发者
配置会话保持|学习笔记
快速学习配置会话保持
400 0
配置会话保持|学习笔记
|
分布式计算 大数据 Spark
会话统计_得出结果|学习笔记
快速学习会话统计_得出结果
108 0
会话统计_得出结果|学习笔记