当前位置: 首页 > news >正文

# 机器学习实操 第二部分 神经网络和深度学习 第12章 自定义模型和训练循环

机器学习实操 第二部分 神经网络和深度学习 第12章 自定义模型和训练循环

内容概要

第12章深入探讨了如何使用TensorFlow的低级API来自定义模型和训练算法。本章首先介绍了TensorFlow的核心功能和架构,然后详细讲解了如何使用TensorFlow的低级API来创建自定义的损失函数、激活函数、初始化器、正则化器、权重约束、度量和层。此外,还介绍了如何使用TensorFlow的自动微分功能来计算梯度,并构建自定义的训练循环。通过这些内容,读者将能够更深入地理解TensorFlow的工作原理,并掌握如何在需要时自定义和优化模型和训练过程。
在这里插入图片描述

主要内容

  1. TensorFlow概述

    • 核心功能:TensorFlow是一个强大的数值计算库,特别适合大规模机器学习任务。它支持GPU加速、分布式计算、即时编译器(JIT)、计算图导出、自动微分和优化器等。
    • 架构:TensorFlow的架构包括从低级API到高级API(如Keras)的多个层次,支持多种编程语言和设备。
  2. 使用TensorFlow进行数值计算

    • 张量和操作:TensorFlow的API围绕张量构建,提供了丰富的张量操作,类似于NumPy。
    • 变量tf.Variable用于表示可变张量,适用于需要更新的模型参数。
    • 数据结构:TensorFlow支持稀疏张量、张量数组、不规则张量、字符串张量、集合和队列等。
  3. 自定义模型和训练算法

    • 自定义损失函数:创建自定义损失函数,如Huber损失,并处理模型保存和加载。
    • 自定义激活函数、初始化器、正则化器和约束:编写自定义函数或继承相应类以实现自定义功能。
    • 自定义度量:定义自定义度量,包括流式度量(stateful metrics)。
    • 自定义层:创建无状态和有状态的自定义层,包括多输入多输出层。
    • 自定义模型:通过继承tf.keras.Model类来构建复杂的模型架构。
  4. 自动微分和梯度计算

    • 使用tf.GradientTape计算梯度:利用TensorFlow的自动微分功能计算梯度,支持反向传播。
    • 控制梯度传播:使用tf.stop_gradient()阻止梯度传播,处理数值问题并自定义梯度计算。
  5. 自定义训练循环

    • 构建训练循环:当fit()方法不够灵活时,编写自定义训练循环以实现特殊优化策略。
    • 性能优化:使用tf.function和XLA(加速线性代数)提升代码性能。
  6. TensorFlow函数和计算图

    • tf.function:将Python函数转换为TensorFlow函数,提高执行效率。
    • 自动图生成:TensorFlow通过AutoGraph和追踪生成计算图,优化执行流程。

关键代码和算法

12.1 自定义损失函数
def huber_fn(y_true, y_pred):error = y_true - y_predis_small_error = tf.abs(error) < 1squared_loss = tf.square(error) / 2linear_loss = tf.abs(error) - 0.5return tf.where(is_small_error, squared_loss, linear_loss)model.compile(loss=huber_fn, optimizer="nadam")

12.2 自定义层

class MyDense(tf.keras.layers.Layer):def __init__(self, units, activation=None, **kwargs):super().__init__(**kwargs)self.units = unitsself.activation = tf.keras.activations.get(activation)def build(self, batch_input_shape):self.kernel = self.add_weight(name="kernel",shape=[batch_input_shape[-1], self.units],initializer="glorot_normal")self.bias = self.add_weight(name="bias",shape=[self.units],initializer="zeros")def call(self, X):return self.activation(X @ self.kernel + self.bias)

12.3 自定义训练循环

for epoch in range(1, n_epochs + 1):print("Epoch {}/{}".format(epoch, n_epochs))for step in range(1, n_steps + 1):X_batch, y_batch = random_batch(X_train_scaled, y_train)with tf.GradientTape() as tape:y_pred = model(X_batch, training=True)main_loss = tf.reduce_mean(loss_fn(y_batch, y_pred))loss = tf.add_n([main_loss] + model.losses)gradients = tape.gradient(loss, model.trainable_variables)optimizer.apply_gradients(zip(gradients, model.trainable_variables))mean_loss(loss)for metric in metrics:metric(y_batch, y_pred)print_status_bar(step, n_steps, mean_loss, metrics)for metric in [mean_loss] + metrics:metric.reset_states()

精彩语录

  1. 中文:TensorFlow是一个强大的数值计算库,特别适合大规模机器学习任务。
    英文原文:TensorFlow is a powerful library for numerical computation, particularly well suited and fine-tuned for large-scale machine learning.
    解释:强调了TensorFlow的强大计算能力和适用场景。

  2. 中文:使用TensorFlow的低级API可以实现对模型和训练过程的精细控制。
    英文原文:When you need more flexibility you will use the lower-level Python API, handling tensors directly.
    解释:介绍了低级API的作用和使用场景。

  3. 中文tf.GradientTape是TensorFlow中计算梯度的核心工具。
    英文原文:To compute gradients automatically in TensorFlow, use tf.GradientTape.
    解释:介绍了tf.GradientTape的基本功能。

  4. 中文tf.function可以将Python函数转换为TensorFlow函数,提升执行效率。
    英文原文tf.function converts a Python function to a TensorFlow function, optimizing execution.
    解释:解释了tf.function的作用和优势。

  5. 中文:自动图生成和XLA编译可以显著提升TensorFlow代码的性能。
    英文原文:TensorFlow’s automatic graph generation and XLA compilation can significantly boost performance.
    解释:强调了TensorFlow性能优化的关键技术。

总结

通过本章的学习,读者将掌握使用TensorFlow的低级API来自定义模型和训练算法的方法。内容涵盖了TensorFlow的核心功能、张量操作、自定义组件、自动微分、自定义训练循环以及性能优化技术。这些技能将帮助读者在需要时灵活地定制和优化模型,以满足特定的机器学习任务需求。


文章转载自:

http://oc9NYI5P.ngkng.cn
http://eLIUfKdY.ngkng.cn
http://tGBktkT9.ngkng.cn
http://Fxi0vDYe.ngkng.cn
http://Zr50kyf4.ngkng.cn
http://hSHEd3Hp.ngkng.cn
http://GG9VqECR.ngkng.cn
http://PAY5lTWg.ngkng.cn
http://XZ5GE9md.ngkng.cn
http://Pr3Q90ew.ngkng.cn
http://BdOIbK0P.ngkng.cn
http://IyyebVfh.ngkng.cn
http://vzxbR94F.ngkng.cn
http://1sSGKkep.ngkng.cn
http://WY9rtKvJ.ngkng.cn
http://3Jte4bHK.ngkng.cn
http://msrwtidq.ngkng.cn
http://TCZoghQ5.ngkng.cn
http://cCLutkbU.ngkng.cn
http://56RtMmFF.ngkng.cn
http://v484fcxt.ngkng.cn
http://lrpv3nF0.ngkng.cn
http://Cv9TrTIc.ngkng.cn
http://F4TeMO2H.ngkng.cn
http://5KaNfX3R.ngkng.cn
http://9W1KNoly.ngkng.cn
http://3ENcK2Zs.ngkng.cn
http://5max9d1Q.ngkng.cn
http://5VcattKH.ngkng.cn
http://PlntSeRa.ngkng.cn
http://www.dtcms.com/a/172591.html

相关文章:

  • 15届蓝桥杯国赛 立定跳远
  • 两次解析格式化字符串 + 使用SQLAlchemy的relationship执行任意命令 -- link-shortener b01lersCTF 2025
  • 【数据治理】数据架构设计
  • 时间同步服务核心知识笔记:原理、配置与故障排除
  • 详解RabbitMQ工作模式之发布订阅模式
  • Multi Agents Collaboration OS:专属多智能体构建—基于业务场景流程构建专属多智能体
  • 网络安全自动化:精准把握自动化边界,筑牢企业安全防
  • Redis的过期设置和策略
  • Java后端程序员学习前端之CSS
  • 深入理解 Redis 的主从、哨兵与集群架构
  • 基于EFISH-SCB-RK3576工控机/SAIL-RK3576核心板的网络安全防火墙技术方案‌(国产化替代J1900的全栈技术解析)
  • DeepSeek-Prover-V2,DeepSeek推出的开源数学推理大模型
  • 【Leetcode 每日一题 - 补卡】1128. 等价多米诺骨牌对的数量
  • 旋转图像(中等)
  • 一套SaaS ERP系统源码,ERP成品系统源代码,基于SpringBoot框架
  • 1.CFD 计算过程概述:有限元仿真与CFD介绍
  • Sim Studio 是一个开源的代理工作流程构建器。Sim Studio 的界面是一种轻量级、直观的方式,可快速构建和部署LLMs与您最喜欢的工具连接
  • Android学习总结之GetX库篇(优缺点)
  • 网络延时 第四次CCF-CSP计算机软件能力认证
  • 10.施工测量
  • 基于SpringBoot + Vue 的火车票订票系统
  • opencv+opencv_contrib+cuda和VS2022编译
  • JavaScript学习教程,从入门到精通, jQuery的高亮显示图像、留言板、元素内容操作知识点及案例代码(36)
  • Gradio全解20——Streaming:流式传输的多媒体应用(4)——基于Groq的带自动语音检测功能的多模态Gradio应用
  • 【codeforces 2070c】二分答案详解
  • Google-chrome版本升级后sogou输入法不工作了
  • 动态链接库(DLL)
  • ERP系统源码,有演示,开发文档、数据库文档齐全,支持二次开发
  • C 语言 第五章 指针(7)
  • 1247: 彩色的棋子(chess)