tensorflow学习笔记 -- 图和会话

1. 图:描述数据在operation(计算单元)间流动结构的对象

有点类似于一个模块或者一个类,两个图之间的张量不会互通,相当于两个类各自的私有变量不会互通一样。计算单元就是不同和函数,一个图就相当于很多数据一块内存中执行很多写好的函数运算。但是一张图仅仅表示张量与运算的结构自己不会去自动运算,需要调用特定的方法才能执行运算最终得到结果。

2. 会话:运行图的类

如下图所示,会话首先为图分配内存然后选择硬件来计算图中的运算。总的来说会话有以下作用:

  • 运行图的结构
  • 分配资源计算
  • 掌握资源(变量的资源,队列,线程等等)

2.1. 上下文管理器

原始的一个会话可以写成如下样式:

import tensorflow as tf
#创建一个会话
sess = tf.Session()
#执行图中的函数
sess.run()
sess.run()
#释放资源
sess.close()

上面写法每次使用完会话都要释放资源很麻烦,可以使用上下文管理器(with)来简化,写成如下样式:

import tensorflow as tf

with tf.Session() as sess:
    sess.run()
    sess.run()

2.2. 执行特定图 

一个会话只能运行一个图,上面会话所执行的是默认的图,如果想要执行特定的图可以写成如下样式:

import tensorflow as tf
#创建一个新的图
g = tf.Graph()
#运行新创建的图
with tf.Session(graph=g) as sess:
    sess.run()

2.3. congfig参数及警告级别设置

接下来使用config参数来打印计算所使用的设备信息,代码样式如下:

import tensorflow as tf
import os

# 将警告提示级别设为2,用于去掉一些不重要的警告
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
# 计算5.0+10.0
a = tf.constant(5.0)
b = tf.constant(10.0)
sum1 = tf.add(a, b)
# 使用config参数来显示每一次operation所使用的设备信息
with tf.compat.v1.Session(config=tf.compat.v1.ConfigProto(log_device_placement=True)) as sess:
    print(sess.run(sum1))

下面是打印的结果:

2.4. 重载

正常tensorflow执行不了普通的变量,但是在重载下是可以转换的,代码式样如下:

import tensorflow as tf

# 不是operation运行不了
# var1 = 3
# var2 = 4
# sum2 = var1 + var2

# 重载机制,如果其中一个是operation可以将另一个普通变量转换为operation
var1 = 3
var2 = tf.constant(4)
sum2 = var1 + var2

with tf.compat.v1.Session() as sess:
    print(sess.run(sum2))

2.5. placeholder及feed_dict

placeholder类似于普通函数的参数一样,可以实时提供数据,代码式样如下:

import tensorflow as tf

# placeholder是一个占位符,feed_dict是一个字典
# 第一个参数表示数据类型,第二个参数表示形状也就是几行几列的数据,例如下面是2行3列
plt = tf.placeholder(tf.float32, [2, 3])
# 如果形状不确定可以使用None来代替,例如下面是不确定几行但是确定3列的数据
plt1 = tf.placeholder(tf.float32, [None, 3])

with tf.compat.v1.Session() as sess:
    print(sess.run(plt, feed_dict={plt: [[2, 2, 3], [1, 3, 4]]}))

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值