持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第13天,点击查看活动详情
1. TensorFlow中常见OP(Operation)
1.1 操作函数
- 操作函数在运行过程中会产生一个操作对象
- 在完成了输出后通过返回值把输出的对象返回出来
下面将由两个经典的操作(constant和add)进行详细解释:
- tf.constant(Tensor对象):创建一个常数操作
- tf.add(Tensor对象1, Tensor对象2):创建一个加和操作
1.2 操作对象
一个操作对象(Operation)相当于是Tensorflow图中的一个节点,可以接收0-n个输入Tensor,并且可以输出0-n个Tensor,操作对象是由操作函数创建的。
Const操作对象:Const操作对象是由constant操作函数产生的
- 具体过程为:输入Tensor对象-> Const-> 输出Tensor对象
- 操作对象是有输入和输出的
Add操作对象:
- 具体过程为:输入(Tensor对象1,Tensor对象2)-> Add对象-> 输出Tensor对象3
2. 会话
会话相当于是运行TensorFlow中操作的类,包含两种开启方式,如下所示:
- tf.Session:用于完整的程序当中
- tf.InteractiveSession:用于交互式上下文中的TensorFlow,比如在终端中
代码演示:下面将在终端中进行演示
- 打开anaconda prompt
- 进入tensorflow所在的虚拟环境
- 在交互式模式下开启会话
In [1]: import tensorflow.compat.v1 as tf
In [2]: tf.InteractiveSession()
In [3]: a = tf.constant(3)
In [4]: a
运行结果如下所示:
Out[4]: <tf.Tensor: shape=(), dtype=int32, numpy=3>
会话可能拥有的资源,如tf.Variable
,tf.QueueBase
和tf.ReaderBase
。当这些资源不再需要时,释放这些资源非常重要。因此,需要调用tf.Session.close
会话中的方法,将session的资源进行回收。或将会话用作上下文管理器。
具体代码演示如下所示:
# 传统会话定义
sess = tf.Session()
sum = sess.run(c)
sess.close
注意:会话掌握资源,用完要记得回收
若想在运行会话时,打印设备信息。可以使用:
with tf.Session(config=tf.ConfigProto(allow_soft_placement=True,log_device_placement=True)) as sess:
代码演示如下所示:
def session_demo():
"""
会话演示
"""
# TensorFlow实现加法运算
ten_1 = tf.constant(2)
ten_2 = tf.constant(3)
ten_3 = ten_1 + ten_2
print("TensorFlow加法运算的结果:\n", ten_3)
# 查看默认图
# 方法1:调用方法
default_graph = tf.get_default_graph()
print("default_graph:\n", default_graph)
# 方法2:查看属性
print("ten_1的图属性:\n", ten_1.graph)
print("ten_3的图属性:\n", ten_3.graph)
# 开启会话
with tf.Session(config=tf.ConfigProto(allow_soft_placement=True,
log_device_placement=True)) as sess:
ten_3_val = sess.run(ten_3)
print("ten_3_val:\n", ten_3_val)
print("session的图属性:\n", sess.graph)
return None
session_demo()
运行结果如下图所示:由运行结果图可以看出显示了设备信息,虽然设备未知。