Tensorflow |(4)名称域、图 和会话
Tensorflow |(1)初识Tensorflow
Tensorflow |(2)张量的阶和数据类型及张量操作
Tensorflow |(3)变量的的创建、初始化、保存和加载
Tensorflow |(4)名称域、图 和会话
变量作用域
tensorflow提供了变量作用域和共享变量这样的概念,有几个重要的作用。
- 让模型代码更加清晰,作用分明
变量作用域域
通过tf.variable_scope()创建指定名字的变量作用域
with tf.variable_scope("itcast") as scope:print("----")
加上with语句就可以在整个itcast变量作用域下就行操作。
嵌套使用
变量作用域可以嵌套使用
with tf.variable_scope("itcast") as itcast:with tf.variable_scope("python") as python:print("----")
变量作用域下的变量
在同一个变量作用域下,如果定义了两个相同名称的变量(这里先用tf.Variable())会怎么样呢?
with tf.variable_scope("itcast") as scope:a = tf.Variable([1.0,2.0],name="a")b = tf.Variable([2.0,3.0],name="a")
我们通过tensoflow提供的计算图界面观察
我们发现取了同样的名字,其实tensorflow并没有当作同一个,而是另外又增加了一个a_1,来表示b的图
变量范围
当每次在一个变量作用域中创建变量的时候,会在变量的name前面加上变量作用域的名称
with tf.variable_scope("itcast"):a = tf.Variable(1.0,name="a")b = tf.get_variable("b", [1])print(a.name,b.name)
得道结果
(u'itcast/a:0', u'itcast/b:0')
对于嵌套的变量作用域来说
with tf.variable_scope("itcast"):with tf.variable_scope("python"):python3 = tf.get_variable("python3", [1])
assert python3.name == "itcast/python/python3:0"
var2 = tf.get_variable("var",[3,4],initializer=tf.constant_initializer(0.0))
图与会话
图
tf.Graph
TensorFlow计算,表示为数据流图。一个图包含一组表示 tf.Operation计算单位的对象和tf.Tensor表示操作之间流动的数据单元的对象。默认Graph值始终注册,并可通过调用访问 tf.get_default_graph。
a = tf.constant(1.0)
assert c.graph is tf.get_default_graph()
我们可以发现这两个图是一样的。那么如何创建一个图呢,通过tf.Graph()
g1= tf.Graph()
g2= tf.Graph()with tf.Session() as sess:tf.global_variables_initializer().run()print(g1,g2,tf.get_default_graph())
图的其它属性和方法
作为一个图的类,自然会有一些图的属性和方法。
as_default()
返回一个上下文管理器,使其成为Graph默认图形。
如果要在同一过程中创建多个图形,则应使用此方法。为了方便起见,提供了一个全局默认图形,如果不明确地创建一个新的图形,所有操作都将添加到此图形中。使用该with关键字的方法来指定在块的范围内创建的操作应添加到此图形中。
g = tf.Graph()
with g.as_default():a = tf.constant(1.0)assert c.graph is g
会话
tf.Session
运行TensorFlow操作图的类,一个包含ops执行和tensor被评估
a = tf.constant(5.0)
b = tf.constant(6.0)
c = a * bsess = tf.Session()print(sess.run(c))
在开启会话的时候指定图
with tf.Session(graph=g) as sess:
资源释放
会话可能拥有很多资源,如 tf.Variable,tf.QueueBase和tf.ReaderBase。在不再需要这些资源时,重要的是释放这些资源。要做到这一点,既可以调用tf.Session.close会话中的方法,也可以使用会话作为上下文管理器。以下两个例子是等效的:
# 使用close手动关闭
sess = tf.Session()
sess.run(...)
sess.close()# 使用上下文管理器
with tf.Session() as sess:sess.run(...)
run方法介绍
run(fetches, feed_dict=None, options=None, run_metadata=None)
运行ops和计算tensor
- fetches 可以是单个图形元素,或任意嵌套列表,元组,namedtuple,dict或OrderedDict
- feed_dict 允许调用者覆盖图中指定张量的值
如果a,b是其它的类型,比如tensor,同样可以覆盖原先的值
a = tf.placeholder(tf.float32, shape=[])
b = tf.placeholder(tf.float32, shape=[])
c = tf.constant([1,2,3])with tf.Session() as sess:a,b,c = sess.run([a,b,c],feed_dict={a: 1, b: 2,c:[4,5,6]})print(a,b,c)
错误
- RuntimeError:如果它Session处于无效状态(例如已关闭)。
- TypeError:如果fetches或feed_dict键是不合适的类型。
- ValueError:如果fetches或feed_dict键无效或引用 Tensor不存在。
其它属性和方法
graph
返回本次会话中的图
as_default()
返回使此对象成为默认会话的上下文管理器。
获取当前的默认会话,请使用 tf.get_default_session
c = tf.constant(..)
sess = tf.Session()with sess.as_default():assert tf.get_default_session() is sessprint(c.eval())
注意: 使用这个上下文管理器并不会在退出的时候关闭会话,还需要手动的去关闭
c = tf.constant(...)
sess = tf.Session()
with sess.as_default():print(c.eval())
# ...
with sess.as_default():print(c.eval())sess.close()
Tensorflow |(4)名称域、图 和会话相关推荐
- 1.1 Tensorflow笔记(基础篇): 图与会话,变量
图与会话 import tensorflow as tf import os# 取消打印 cpu,gpu选择等的各种警告 # 设置TF_CPP_MIN_LOG_LEVEL 的等级,1.1.0以后设置2 ...
- tensorflow怎样调用gpu_tensorflow基本用法(图,会话,tensor,变量等)
使用 TensorFlow, 你必须明白 TensorFlow: 使用图 (graph) 来表示计算任务. 在被称之为 会话 (Session) 的上下文 (context) 中执行图. 使用 ten ...
- Tensorflow笔记(基础): 图与会话,变量
图与会话 import tensorflow as tf import os# 取消打印 cpu,gpu选择等的各种警告 # 设置TF_CPP_MIN_LOG_LEVEL 的等级,1.1.0以后设置2 ...
- TensorFlow(2)图(默认图与自定义图) TensorBoard可视化
目录 一.图 1.默认图 1.调用方法查看默认图属性 2..graph查看图属性 代码 2.自定义图(创建图) 1.创建自定义图 2.创建静态图 3.开启会话(运行) 4.查看自定义图 代码 二.Te ...
- 图卷积神经网络(part3)--三个经典谱域图卷积模型
学习笔记,仅供参考,有错必究 文章目录 三个经典谱域图卷积模型 概述 SCNN SCNN的缺点 ChebNet GCN 三个经典谱域图卷积模型 概述 三个图谱卷积模型(SCNN.ChebNet.GCN ...
- 论文浅尝 - ACL2020 | 利用常识知识图对会话流进行显式建模
笔记整理 | 韩振峰,天津大学硕士 链接:https://arxiv.org/pdf/1911.02707.pdf 动机 人类对话自然地围绕相关概念发展,并分散到多跳概念.本文提出了一种新的会话生成模 ...
- gcn 图卷积神经网络_谱域图卷积模型---SCNN,ChebNet,GCN
对于图神经网络(GNN)而言,其实现卷积主要有两种两种方法,分别是谱域图卷积方法和空域图卷积方法.这次主要介绍使用谱方法实现卷积的三个模型,即SCNN,ChebNet,GCN. 近几年图神经网络的越来 ...
- PyQt5 QtChart-区域图
PyQt5 QtChart-区域图 QAreaSeries用于创建区域图数据,传入两个QLineSeries对象.核心代码: series0 = QLineSeries() series1 = QLi ...
- 图卷积(4)——谱域图卷积(3)
图卷积(4)--谱域图卷积(3) 介绍三种谱域图卷积网络--SCNN.ChebNet和GCN.三者均是以下式子的特例: x⋆Ggθ=UgθUTx=U(g^(λ1)⋱g^(λn))(x^(λ1)x^(λ ...
最新文章
- 扩展城市信道etu模型matlab仿真,LTE System Toolbox:无线通信系统的仿真、分析和测试...
- 紧急更新下降难度,《王者荣耀》绝悟 AI 难倒一片玩家
- 视频专辑:JAVA语言入门视频教程
- Java中String为什么是final
- oracle的口令就是密码吗,如何修改Oracle用户的密码(不改变原密码)
- 钉钉自带浏览器版本过低,导致Object.assign不兼容...
- php字库,TCPDF生成内置字库的PDF
- vue项目通讯录_vue组件--通讯录
- 数字功放芯片品牌大全
- electron快捷键
- 计算机睡眠与休眠有什么区别,小编教你电脑睡眠和休眠的区别是什么.
- 【智能家居】空调遥控器破解
- 2021GPLT L1-8 乘法口诀数列(JAVA语言)
- 扫雷-空白展开算法(优化)-详解
- 台式机安装双系统win10+Ubuntu
- 脾肾阳虚平时要注意什么?
- ssd测试软件cy,简析物体识别SSD算法
- org.springframework.context.annotation.AnnotationConfigApplicationContext has not been refreshed yet
- php函数题,求教:用php函数算题
- CIDR的IP地址的表示与划分方法(转)