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.1 Tensorflow笔记(基础篇): 图与会话,变量

    图与会话 import tensorflow as tf import os# 取消打印 cpu,gpu选择等的各种警告 # 设置TF_CPP_MIN_LOG_LEVEL 的等级,1.1.0以后设置2 ...

  2. tensorflow怎样调用gpu_tensorflow基本用法(图,会话,tensor,变量等)

    使用 TensorFlow, 你必须明白 TensorFlow: 使用图 (graph) 来表示计算任务. 在被称之为 会话 (Session) 的上下文 (context) 中执行图. 使用 ten ...

  3. Tensorflow笔记(基础): 图与会话,变量

    图与会话 import tensorflow as tf import os# 取消打印 cpu,gpu选择等的各种警告 # 设置TF_CPP_MIN_LOG_LEVEL 的等级,1.1.0以后设置2 ...

  4. TensorFlow(2)图(默认图与自定义图) TensorBoard可视化

    目录 一.图 1.默认图 1.调用方法查看默认图属性 2..graph查看图属性 代码 2.自定义图(创建图) 1.创建自定义图 2.创建静态图 3.开启会话(运行) 4.查看自定义图 代码 二.Te ...

  5. 图卷积神经网络(part3)--三个经典谱域图卷积模型

    学习笔记,仅供参考,有错必究 文章目录 三个经典谱域图卷积模型 概述 SCNN SCNN的缺点 ChebNet GCN 三个经典谱域图卷积模型 概述 三个图谱卷积模型(SCNN.ChebNet.GCN ...

  6. 论文浅尝 - ACL2020 | 利用常识知识图对会话流进行显式建模

    笔记整理 | 韩振峰,天津大学硕士 链接:https://arxiv.org/pdf/1911.02707.pdf 动机 人类对话自然地围绕相关概念发展,并分散到多跳概念.本文提出了一种新的会话生成模 ...

  7. gcn 图卷积神经网络_谱域图卷积模型---SCNN,ChebNet,GCN

    对于图神经网络(GNN)而言,其实现卷积主要有两种两种方法,分别是谱域图卷积方法和空域图卷积方法.这次主要介绍使用谱方法实现卷积的三个模型,即SCNN,ChebNet,GCN. 近几年图神经网络的越来 ...

  8. PyQt5 QtChart-区域图

    PyQt5 QtChart-区域图 QAreaSeries用于创建区域图数据,传入两个QLineSeries对象.核心代码: series0 = QLineSeries() series1 = QLi ...

  9. 图卷积(4)——谱域图卷积(3)

    图卷积(4)--谱域图卷积(3) 介绍三种谱域图卷积网络--SCNN.ChebNet和GCN.三者均是以下式子的特例: x⋆Ggθ=UgθUTx=U(g^(λ1)⋱g^(λn))(x^(λ1)x^(λ ...

最新文章

  1. 扩展城市信道etu模型matlab仿真,LTE System Toolbox:无线通信系统的仿真、分析和测试...
  2. 紧急更新下降难度,《王者荣耀》绝悟 AI 难倒一片玩家
  3. 视频专辑:JAVA语言入门视频教程
  4. Java中String为什么是final
  5. oracle的口令就是密码吗,如何修改Oracle用户的密码(不改变原密码)
  6. 钉钉自带浏览器版本过低,导致Object.assign不兼容...
  7. php字库,TCPDF生成内置字库的PDF
  8. vue项目通讯录_vue组件--通讯录
  9. 数字功放芯片品牌大全
  10. electron快捷键
  11. 计算机睡眠与休眠有什么区别,小编教你电脑睡眠和休眠的区别是什么.
  12. 【智能家居】空调遥控器破解
  13. 2021GPLT L1-8 乘法口诀数列(JAVA语言)
  14. 扫雷-空白展开算法(优化)-详解
  15. 台式机安装双系统win10+Ubuntu
  16. 脾肾阳虚平时要注意什么?
  17. ssd测试软件cy,简析物体识别SSD算法
  18. org.springframework.context.annotation.AnnotationConfigApplicationContext has not been refreshed yet
  19. php函数题,求教:用php函数算题
  20. CIDR的IP地址的表示与划分方法(转)

热门文章

  1. 警惕 Spring Boot Actuator 引发的安全问题
  2. RabbitMQ 高频考点
  3. 京东面试官问我:“聊聊MySql事务,MVCC?”
  4. 如何无侵入管理所有的微服务接口?
  5. 深入理解Java虚拟机-如何利用 JDK 自带的命令行工具监控上百万的高并发的虚拟机性能...
  6. 128G小米CC9e手机,免费送!真事!
  7. 三分钟基础:什么是拥塞控制?
  8. 没做领导的时候,觉得领导都是傻X!做了领导之后觉得下属才是傻X!
  9. 学了那么多年设计模式依然不会用!那可真蠢!
  10. 值得分享!它们才是真正的宝藏网站,让人惊艳