本文共 2514 字,大约阅读时间需要 8 分钟。
TensorFlow的会话机制是构建和运行TensorFlow图的核心。一旦打开会话,无论是使用tf.Session
还是tf.InteractiveSession
,都将为你提供一个与TensorFlow运行时通信的桥梁。
会话可以通过以下方式创建和配置:
tf.Session(target='', graph=None, config=None)
:默认情况下,会话将使用本地设备。你也可以指定远程服务器的地址(如grpc://
)。graph
:指定会使用的TensorFlow图。如果不指定,默认使用当前的默认图。config
:用于配置会话的参数,如是否允许软分配或日志设备分配。示例代码:
import osimport tensorflow as tfos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'tf.compat.v1.disable_v2_behavior()def session_demo(): a = tf.constant(10) b = tf.constant(20) c = tf.add(a, b) with tf.Session(config=tf.ConfigProto( allow_soft_placement=True, log_device_placement=True )) as sess: print("TensorFlow实现加法运算:\n", c) print(sess.run([a, b, c])) return Noneif __name__ == '__main__': session_demo()
run()
方法sess.run()
是运行TensorFlow操作的核心方法:
fetches
:指定要执行的操作(列表、元组等)。feed_dict
:用于在运行时赋值占位符,配合tf.placeholder
使用。options
:指定执行选项(如设备筛选)。run_metadata
:用于获取运行时元数据。示例代码:
import osimport tensorflow as tfos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'tf.compat.v1.disable_v2_behavior()def session_run_demo(): a = tf.placeholder(tf.float32) b = tf.placeholder(tf.float32) sum_ab = tf.add(a, b) with tf.Session() as sess: result = sess.run(sum_ab, feed_dict={a: 3.0, b: 4.0}) print("结果:\n", result) return Noneif __name__ == '__main__': session_run_demo()
**feed_dict
**允许你在运行时指定占位符值,适合动态数据:
feed_dict
映射到占位符。示例代码:
import osimport tensorflow as tfos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'tf.compat.v1.disable_v2_behavior()def session_run_demo(): # 定义占位符 a = tf.placeholder(tf.float32) b = tf.placeholder(tf.float32) sum_ab = tf.add(a, b) # 用feed_dict赋值 with tf.Session() as sess: #运行会话并输出结果 print("markdown 格式展示结果:\n", sess.run(sum_ab, feed_dict={a: 3.0, b: 4.0})) return Noneif __name__ == '__main__': session_run_demo()
无论何时结束使用会话,记得关闭它以释放资源。可以使用sess.close()
方法,或者使用上下文管理器。
示例代码:
import osimport tensorflow as tfos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'tf.compat.v1.disable_v2_behavior()def session_demo(): with tf.Session() as sess: a_t = tf.constant(10) b_t = tf.constant(20) c_t = tf.add(a_t, b_t) print("运行结果:\n", sess.run([a_t, b_t, c_t])) print("会话已经关闭,不可再用")if __name__ == '__main__': session_demo()
tf.Session
用于程序中,tf.InteractiveSession
用于命令行。target
控制设备位置,graph
指定使用的图,config
优化资源分配。run()
执行操作,feed_dict
赋值占位符。转载地址:http://fnekk.baihongyu.com/