智能计算系统-Tensorflow框架的计算图机制

news/2024/9/8 8:12:13/文章来源:https://www.cnblogs.com/zjz2333/p/18205007

智能计算系统-Tensorflow框架的计算图机制

陈云霁老师的课,趁现在有时间,打算了解深度学习的底层原理。

从第五章编程框架机理开始,一到四章是深度学习基础,在此不再讨论

一. 深度学习框架的设计原则

1. 高性能

主要体现在

  • 神经网络的算子,针对底层硬件进行充分优化
  • 在计算图上进行一系列优化
  • 根据网络结构,并发的计算没有数据依赖的节点
2. 易开发

共性运算封装为算子

3. 可移植

针对每个算子,提供不同设备的不同底层实现

二. Tensorflow的计算图原则

1. 计算图的自动求导机制

基于计算图实现自动求导方法。

求导共有四种方法:

  1. 手动求导法:人工求,最为麻烦,在此略过

  2. 数值求导法:

    ​ 依赖导数的定义:

    \[f(x) = \lim_{h→0} \frac{f(x+h)-f(x)}{h} \]

    相当于直接根据导数定义,在输入中添加改动h,再算一次结果,最终相减并作除法得到导数

    这种方法简单直观,可对用户隐藏求导过程

    但是,计算量大,极易引起舍入、截断误差(如计算sin等)

  3. 符号求导法:利用求导规则对表达式操作,最后代入数值,从而获得导数

​ 如下图所示:

image-20240521212434252

​ 这种方法在反向传播后导数的表达式会过于庞大

  1. 自动求导法:这是介于数值求导和符号求导之间的方法。

    核心为算子内用符号求导,算子之间按照计算图拓扑顺序从后向前带入数值

    举个例子理解:

    image-20240521212728482

​ 上面这幅图是tensorflow的计算图示例,也展现了前向传播的过程。

​ 当反向计算各个节点的梯度时,结果如下:

image-20240521212856430

从图里面可以发现:

先用符号求导得到每个算子的导数表达式,

之后从后往前,反向带入数值。

这样的自动求导机制,十分适合计算图机制

四种方法的对比效果如下:

image-20240521213252843

2. 检查点机制

实例化saver对象,以及实现神经网络中所有变量的保存与回复。

saver = tf.train.Saver()
saver.save(sess, "./ckpt/my-model")
saver.restore(sess, ckpt)

3. TensorFlow的控制流

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用户与组管理

一、服务器版本 windows服务器系统:win2003 、win2008、win2012、win2019 linux服务器系统:Redhat(开源收费(售后))、Centos(开源不收费) 二、用户概述1、每一个用户登录系统后,拥有不同的操作权限2、每个账户又自己唯一的SID(安全标识符) 为什么要分不同的用户 3、配…

ntfs

储备: 首先需要明白什么是文件系统。文件系统是系统对文件的存放排列方式,不同格式的文件系统关系到数据是如何在磁盘进行存储,文件名、文件权限和其他属性也存在不同。Windows操作系统支持 NTFS, FAT32, and exFAT三种不同文件系统。NTFS是目前Windows系统中一种现代文件系…

Chart.js (v2.9.4)概要介绍

chart.js是一个非常优秀的开源图表插件,扩展非常灵活,同时也提供了大量的钩子函数,给与用户添加自定义插件,实现个性化的需求。 具体的优势特点,这里不详述,网上大把资料,现开始正式深入了解这个插件.Chart布局大概分为如下六个区域,这些是主要的,也有些特殊,比如左右…

window版postgresql安装orafce插件

在Visual Studio中创建一个新的C工程:将解压目录下的除.sql和文件夹之外的文件都copy到新创建的工程中,另外要将sqlscan.c排除在项目之外 配置编译选项配置预处理器,预处理器定义中的内容为: WIN32 _WINDOWS _DEBUG _CRT_SECURE_NO_WARNINGS 注意要有_CRT_SECURE_NO_WARNI…

为什么 mov sp, 32,debug程序,执行sp=32的位置,后面的代码就全乱了(在小甲鱼零基础汇编第6章,包含多段程序,的视频代码)

assume cs:code, ds:data, ss:stackdata segmentdw 0123h, 0456h, 0789h, 0abch, 0defh, 0fedh, 0cbah, 0987h; 用来作存放数据 data endsstack segmentdw 0, 0, 0, 0, 0, 0, 0, 0; 用来作栈的空间 stack ends code segmentstart:; 设置数据段mov ax, datamov ds, ax ; 设…

mysql报错:Lock wait timeout exceeded: try restadina transaction

这次是在Navicat上复制了一个表结构和数据准备备份一下,然后要用语句批量处理数据,结果导致项目上的更新操作报这个错误。原因是因为表中的数据量太大,复制表一时半会卡到那了。于是我在网上搜索了如下办法。尝试在数据库中杀死线程来终止复制表的操作。 SELECT * FROM info…

ASP.NET之JSONHelper操作

之前说到了Ext.Net中GridPanel行取值的问题(Ext.Net开发_GridPanel行选中取值),涉及到checkBox操作时,要留个心眼注意下取值的区别!返回值是Json格式。 现在用到了Json,就想自己也整一个Josn帮助类。在线帮助的资料很多,在巨人的身上东凑西凑也凑一个用用。   一、介绍…

Git:warning: CALF wilL be replaced by LF in xxxx 问题解决

warning: CALF wilL be replaced by LF in xxxx 问题解决办法 出现这个问题的原因是像缓存区中提交文件时出现的 原因: windows中的换行符为 CRLF,而在Linux下的换行符为LF,所以在执行add . 时出现提示 也就是, 工作区的文件都应该用 CRLF 来换行。如果 改动文件时引入了 …

密码爆破ssh与ftp服务(finish)

密码爆破ssh与ftp服务 使用工具九头蛇(hydra) ssh 环境配置 win10 安装sshd服务端在cmd命令行使用 net start sshd 命令启动服务kali 打开终端查看是否开启ssh服务 nmap -sV -T4 -p- [kali的ip] 先创建一个用户名字典username.txt,把经常用的用户名写入到字典中 touch usern…

Obsidian第三方插件下载

一、从Obsidian插件市场下载 使用第三方插件的第一步是关闭安全模式。点击“浏览”,搜索需要的插件名称。在这里输入名称搜索。点击安装。点击启用。必要时要使用魔法。 替代方法proxy-github二、从别的地方下载的插件 首先了解一下obsidian插件的基本构成,主要包括下面的文件…