Tensorflow入门与实战学习笔记(八)--Eager模式

2023-10-31 22:30

本文主要是介绍Tensorflow入门与实战学习笔记(八)--Eager模式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1 前言:

2 简介:

2.1 Eager模式方便学习以及模型调试

2.2 Eager模式运行特点

2.3 Eager模式中梯度的计算

3 .Eager模块的演示代码

4 变量与自动微分运算实例

5 自定义训练

注意:测试数据不需要乱序

tf.keras.metrics 汇总计算模块


1 前言:

我们学会使用了keras提供的api实现神经网络,可是由于他封装的太好了,对于自定义的循环与自定义的训练是不友好的

我们可以使用Eage,再循环中使用Eager

2 简介:

TensorFlow的eager模式是一个命令式编程环境,它使得我们可以立即评估操作产生的结果,而无需构建计算图

Eager与图运算模式:

简单的说:图运算就相当于把每一步的绘制出来,Eager则可以直接得出结果

2.1 Eager模式方便学习以及模型调试

Eager模式极大的方便我们使用TensorFlow调试模型,增加了网络调试的灵活程度和tensorflow对于初学者友好性。 在这里我们可以叫它 tensorflow的交互模式

Eager模式提供了一个灵活的研究和实验机器学习平台 提供:
  • 直观的界面 - 自然地构建代码并使用Python数据结构 。
  • 快速迭代小型模型和小型数据。

更容易调试 -在交互式环境中直接检查、运行模型、测试变化。这个过程中代码会即时错误报告

 

自然控制流 - eager模式下使用Python控制流而不是 图控制流,简化了动态模型的创建。

热切执行支持大多数TensorFlow操作和GPU加速。

2.2 Eager模式运行特点

  • eager模式下,TensorFlow操作会立即执行并将其值返回给Python(后面请查看例子)。
  • tf.Tensor对象引用具体值而不是计算图中节点的符号句柄(可以进行修改)。
  • Eager模式下Tensorflow可与NumPy很好地协作。 TensorFlow 数学运算可将Python对象和NumPy数组
  • 转换为tf.Tensor对象。 而 tf.Tensor.numpy方法将对象的值作为NumPy返回 ndarray

2.3 Eager模式中梯度的计算

在Eager模式中,使用tf.GradientTape跟踪计算梯度的操作

由于在每次执行可能发生不同的操作,所有前向传递操作都被记录到Tape上。要计算渐变,就往后播放磁带然后丢弃特定的tf.GradientTape只能计算一个梯度; 后续调用会引发运行时错误(RUNTIMEERROR)。 也可以设置可重复调用

3 .Eager模块的演示代码

 

 

  1. tf.multiply() 两个矩阵中对应元素各自相乘
  2. tf.matmul()将矩阵a乘以矩阵b,生成a * b

4 变量与自动微分运算实例

5 自定义训练

 

未训练的时候

训练之后:

注意:测试数据不需要乱序

 

tf.keras.metrics 汇总计算模块

可以求均值m = tf.keras.metrics.Mean('acc')

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

这篇关于Tensorflow入门与实战学习笔记(八)--Eager模式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/318563

相关文章

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

PowerShell中15个提升运维效率关键命令实战指南

《PowerShell中15个提升运维效率关键命令实战指南》作为网络安全专业人员的必备技能,PowerShell在系统管理、日志分析、威胁检测和自动化响应方面展现出强大能力,下面我们就来看看15个提升... 目录一、PowerShell在网络安全中的战略价值二、网络安全关键场景命令实战1. 系统安全基线核查

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满

Java设计模式---迭代器模式(Iterator)解读

《Java设计模式---迭代器模式(Iterator)解读》:本文主要介绍Java设计模式---迭代器模式(Iterator),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录1、迭代器(Iterator)1.1、结构1.2、常用方法1.3、本质1、解耦集合与遍历逻辑2、统一

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr