30天从入门到精通TensorFlow1.x 第四天,TensorFlow中的计算图或数据流图

文章目录

  • 一、接前一天
  • 二、计算图或数据流图
    • 1. 什么是计算图或者数据流图
    • 2. 为什么需要计算图或者数据流图
    • 3. 执行顺序和延迟加载在tf中的使用

一、接前一天

这几天主要学习了张量的创建方法,以及变量变量命名域共享变量等概念。今天主要熟悉 数据流图或者计算图的概念

二、计算图或数据流图

1. 什么是计算图或者数据流图

(1). 计算图是tf基本计算单位之一,与张量一样都是基本的计算单位。
(2). tensorflow1中的数据流图,也被称为计算图,是一种用于表示机器学习模型的抽象概念。它由节点(Nodes)边(Edges)组成,其中节点代表操作或变量表示它们之间的依赖关系

当我们定义了一个tensorflow1的计算图后,我们可以使用tensorflow提供的Session对象对其进行计算。Session会将计算图中依赖关系解析出来,实现节点之间的数据流动,并最终生成输出结果。

在计算图中,每个节点可以接受零个或多个输入,并产生零个或多个输出每个输出都可以被视为一个张量(tensor),因此tensorflow的名字也正是由此而来。

通过这种方式,tensorflow将复杂的计算过程抽象成为一个图形结构,使得我们可以更加直观地理解模型的结构和逻辑,方便进行优化和调试。

例如:定义一个 加法

在这里插入图片描述
节点表示操作(包括变量的创建、张量的数学运算、卷积操作等)表示操作之间的依赖关系。这里就是说在执行输出y之前需要执行 输入阶段和add节点。

节点可以接收零个或多个输入,产生零个或多个输出,每个输出又可以被视为一个tensor(张量)。在tensorflow中,张量是一种具有特定形状(shape)数据类型(dtype)多维数组,可以用来存储数据。

(3). 计算图上有两种操作

  1. 构建计算图
    创建api:
graph = tf.get_default_graph()
  1. 运算计算图

使用tensorflow提供的Session对象对其进行计算

2. 为什么需要计算图或者数据流图

  1. 可以高效地计算模型的前向传递和反向传播:TensorFlow使用数据流图来表示计算模型,它可以自动地计算模型的前向传递和反向传播。数据流图将计算过程划分为一系列节点(Nodes)和边缘(Edges),每个节点代表一个操作或函数,而边缘则表示节点间的依赖关系。TensorFlow可以通过在数据流图中进行迭代、优化和求导等操作,高效地计算模型的输出值和梯度。

  2. 可以实现延迟加载和分布式计算:TensorFlow支持延迟加载机制,这意味着它只有在需要时才会计算节点的值,而不是在图构建阶段就立即计算。这种机制可以降低内存占用和计算量,提高计算效率和灵活性,并且允许动态调整计算图结构和参数。同时,数据流图还可以方便地实现分布式计算,从而充分利用多台机器的计算资源,加速计算过程。

  3. 可以轻松地构建复杂的计算模型:TensorFlow提供了丰富的API,可以帮助用户轻松地构建各种复杂的计算模型,包括神经网络、卷积神经网络、循环神经网络等。通过在数据流图中添加不同类型的节点和边缘,用户可以描述具有各种功能和性能的计算模型,并利用TensorFlow高效地训练和优化这些模型。

例如

import tensorflow as tf# 定义两个向量
a = tf.constant([1.0, 2.0, 3.0], name="a")
b = tf.constant([4.0, 5.0, 6.0], name="b")# 定义向量加法操作
c = tf.add(a, b, name="add")# 创建Session并执行图上的操作
sess = tf.Session()
result = sess.run(c)
print(result)# 关闭Session
sess.close()

在这行代码中,我创建两个常量,并执行add操作。因为没有使用with模块,因此最后需要 .close()操作.
注意
TensorFlow会自动创建默认的数据流图,用户不需要显式的使用graph = tf.get_default_graph()创建。用户使用tf中的操作时候,都会自动添加到默认的计算图中。但是在多图中就要进行显式的创建

使用附带with模块的不需要.close()操作。

import tensorflow as tf#y = wx + bw = tf.Variable([0.3],dtype=tf.float32)
b = tf.Variable([-3],dtype=tf.float32)x = tf.placeholder(tf.float32)y = w*x + b
out = 0with tf.Session() as sess:tf.global_variables_initializer().run()out = sess.run(y,{x:[1,2,3,4]})print('out:',out)

3. 执行顺序和延迟加载在tf中的使用

  1. 执行顺序:在计算图中,每个节点代表了一个计算操作或函数,并且它们之间通过边连接来表示数据依赖关系。当计算图被执行时,节点将按照它们的输入输出以及边的顺序进行计算,并将它们的结果传递给它们所连接的节点。因此,计算图中的执行顺序通常是确定的,且与节点的位置形状颜色等外部特征无关

  2. 延迟加载:有些计算图框架支持延迟加载机制,即只有在需要时才计算节点的值,而不是在图构建阶段就立即计算。这种机制可以降低内存占用计算量,提高计算效率灵活性,并且允许动态调整计算图结构和参数。具体来说,当我们使用计算图框架构建模型时,只需要定义节点之间的依赖关系和计算规则,而不需要显式地指定每个节点的值。然后,当我们需要计算某个节点的值时,框架会自动递归地计算该节点所依赖的所有节点,并返回最终结果。这种机制类似于Python中的惰性求值(lazy evaluation),可以大大简化编程和调试过程。

例如:
我们想要控制图中节点的执行顺序,可以通过tf.Graph.control_dependencises()函数来实现:
比如:计算节点a,b,c,d希望在执行ab之前执行cd

with graph_variable.control_dependcies([c,d]):pass

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/351727.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

通达信l1l2行情接口-十档行情有哪些优势?

据提供系统或用户编制的条件选股公式进行选股选定一个条件选股公式或多个组合条件后,计算机自动帮您选出当时或历史上某一段时间内满足条件的所有股票十档行情 英文,列在行情下载显示窗口,同时可保留成板块。 那通达信l1l2行情接口-十档行情…

ciscn 2023 初赛 pwn shell we go

ciscn 2023 初赛 pwn shell we go 这题go pwn,符号恢复就恢复很长时间了,网上的插件好多都没用 根着流程,可以看到这里有一个验证,以空格来分割,第一个参数会验证是否为nAcDsMicN 如果第一个参数验证通过&#xff0c…

[AHK]获取通达信软件上的股票代码

PC上的股票交易软件的自动止损、自动下单等功能比较弱,不如期货交易软件。 自力更生,程序员都是自己打造工具。 根据IPO模型(Input 输入,Process处理,Output输出),为了方便自动化首先要获取当…

(十)服务器K8S集群部署SpringBoot项目实战

1.准备springboot项目 可以在 https://start.spring.io/网站准备一个项目,这里作为k8s的学习所以springboot项目中准备一个简单的访问接口即可。 2.服务器环境准备 安装Jdk 1.更新系统软件包: sudo yum update2.安装 OpenJDK 11: sudo…

毕业三年,自学软件测试到就业,我用了4个月

我转行的经历 17年毕业,普通专科,通信专业。 当初选择这个专业是因为有一个校企合作,承诺学生毕业之后给学生安排就业,在学校里面混了三年之后,学校也是履行了当初安排就业的承诺,给我“发配”到了上海&a…

Python数据攻略-DataFrame的数据计算和整理

大家好,我是Mr数据杨。今天,我们要踏上一场探索Python的旅程,途中我们将讲解算术运算、NumPy和SciPy函数的应用、DataFrame的排序、过滤、统计和遍历等技巧。想象一下如果《三国演义》中的诸葛亮有了Python的帮助,他将如何更有效地…

海睿思分享 | 企业如何加强采购风险控制

企业运营的主要流程,不会因为企业人员规模或者业务规模大小的差异,而出现巨大的差异。千万亿市值的上市公司、不足百人的新兴公司,面对的经营风险本质上不会有明显的区别。今天我们一起分享企业经营管理中常见的风险应对策略。 对于企业而言…

Treadlocal源码实例详解

我们都知道treadlocal维护变量时候,可以为每个线程维护一个独立的副本,改变的是自己线程的数据。 ThreadLocal公用方法有四个:get,set,remove,intiValue 既然threadLocalMap是局部变量,所以他存…

C++学习之旅 - new运算符

C中利用new操作符在堆区开辟数据 堆中开辟的数据由程序员手动开辟&#xff0c;手动释放&#xff0c;释放利用操作符delete 语法new 数据类型 #include <iostream>using namespace std;int *func(){int* p new int(10);return p; }int main() {int* p func();cout <&…

传奇开服教程完整版GOM引擎超详细的单机架设图文教程(小白一看就会)

准备工具 1.传奇版本和补丁2.热血传奇客户端3.DBC20004.绿盟GOM登录器 服务端安装步骤&#xff1a; 1.把下载好的传奇版本解压在你电脑的D盘 2.补丁文件夹直接解压到你的传奇客户端根目录 3.解压好DBC2000开始安装&#xff0c;安装完成后关闭DBC程序 4.打开控制面板&#xff0…

深入理解Linux虚拟内存管理(四)

系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核&#xff08;一&#xff09; 深入理解 Linux 内核&#xff08;二&#xff09; Linux 设备驱动程序&#xff08;一&#xff09; Linux 设备驱动程序&#xff08;二&#xff09; Linux 设备驱动程序&#xff08;三&#xf…

锐捷AC的部署实例

进行锐捷AC部署时&#xff0c;遇到了一些问题&#xff0c;遂记录下来&#xff0c;如若大家在项目过程中遇到类似问题可以对照解决。 写在前面&#xff08;锐捷AC的基础配置&#xff09; ac-controller //配置AC的capwap源地址信息&#xff0c;国家码等…

Nginx配置域名证书

Nginx配置域名证书 1、证书存放路径 2、nginx.conf文件中增加以下配置&#xff0c;注意路径不一样&#xff0c;访问地址目录不一样 server {listen 443 ssl http2;server_name jistest.vwatj.ap.vwg;ssl_certificate D:/home/XXX/ssl/2023/XXX.cer; ssl_certificate_key D…

在线配资平台哪家正规?排名在前的有哪些平台?

在线配资平台哪家正规&#xff1f;排名在前的有哪些平台&#xff1f; 比如有永华证券、联华证券、财盛证券、中信证券、东方证券等等这些平台。也是排名比较靠前的&#xff01; 选择平台需要投资者仔细研究不同的在线配资平台的投资风格、费用、客户服务等因素&#xff0c;并根…

《辉煌优配》科技股强势引领A股反弹 沪深两市日成交额再超万亿元

受美联储再度加息扰动&#xff0c;昨日早盘沪深两市指数低开&#xff0c;随后科技股强势拉升&#xff0c;带动商场回暖。到收盘&#xff0c;上证综指报3286.65点&#xff0c;上涨0.64%&#xff1b;深证成指报11605.29点&#xff0c;上涨0.94%&#xff1b;创业板指报2361.41点&a…

A股管家股票自动交易软件系统,功能完善强大

2013年的时候&#xff0c;有个广东的朋友说再用这款A股管家股票自动系统&#xff0c;我当时比较惊讶&#xff0c;以前想过要是有一款股票自动交易软件能偶尔代替我一下就好了&#xff0c;虽然是职业股民&#xff0c;但也经常遇到太忙的时候&#xff0c;实在没时间。然后就在朋友…

亚马逊云科技出海日,让数字经济出海扩展到更多行业和领域

数字化浪潮之下&#xff0c;中国企业的全球化步伐明显提速。从“借帆出海”到“生而全球化”&#xff0c;中国企业实现了从传统制造业“中国产品”出口&#xff0c;向创新“中国技术”和先导“中国品牌”的逐步升级。 作为全球云计算的开创者与引领者&#xff0c;亚马逊云科技…

JDK11+mybatis-plus+shardingsphere分库分表

1、引入jar dynamic-datasource-spring-boot-starter&#xff1a;2.5.6 sharding-jdbc-spring-boot-starter&#xff1a;4.1.1 <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId>&…

【单目标优化算法】沙猫群优化算法(Matlab代码实现)

&#x1f4a5; &#x1f4a5; &#x1f49e; &#x1f49e; 欢迎来到本博客 ❤️ ❤️ &#x1f4a5; &#x1f4a5; &#x1f3c6; 博主优势&#xff1a; &#x1f31e; &#x1f31e; &#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 …

华为路由器 NAT 配置

拓扑图 静态 NAT 静态地址转换是指外部网络和内部网络之间的地址映射关系由配置确定&#xff0c;该方式适用于内部网络与外部网络之间存在固定访问需求的组网环境。静态地址转换支持双向互访&#xff1a;内网用户可以主动访问外网&#xff0c;外网用户也可以主动访问内网。 一…