tensorflow.keras 指南# 编写自己的回调函数 简介 设置 Keras 回调函数概述 回调函数方法概述 全局方法 on_(train|test|predict)_begin(self, logs=None) on_(train|test|predict)_end(self, logs=None) Batch-level methods for training/testing/predicting on_(train|test|predict)_batch_begin(self, batch, logs=None) on_(train|test|predict)_batch_end(self, batch, logs=None) 周期级方法(仅训练) on_epoch_begin(self, epoch, logs=None) on_epoch_end(self, epoch, logs=None) 基本示例 logs 字典的用法 self.model 属性的用法 Keras 回调函数应用示例 在达到最小损失时尽早停止 学习率规划 内置 Keras 回调函数 通过子类化创建新的层和模型 设置 Layer 类:状态(权重)和部分计算的组合 层可以具有不可训练权重 最佳做法:将权重创建推迟到得知输入的形状之后 层可递归组合 add_loss() 方法 add_metric() 方法 可选择在层上启用序列化 call() 方法中的特权 training 参数 call() 方法中的特权 mask 参数 Model 类 汇总:端到端示例 超越面向对象的开发:函数式 API 自定义 Model.fit 的内容 简介 设置 第一个简单的示例 在更低级别上操作 支持 sample_weight 和 class_weight 提供您自己的评估步骤 总结:端到端 GAN 示例 函数式 API 设置 简介 训练,评估和推断 保存和序列化 所有模型均可像层一样调用 所有模型均可像层一样调用 处理复杂的计算图拓扑 具有多个输入和输出的模型 小 ResNet 模型 共享层 提取和重用层计算图中的节点 使用自定义层扩展 API 何时使用函数式 API 函数式 API 的优势: 更加简洁 定义连接计算图时进行模型验证 函数式模型可绘制且可检查 函数式模型可以序列化或克隆 函数式 API 的劣势: 不支持动态架构 混搭 API 样式 Keras 中的遮盖和填充 设置 简介 填充序列数据 遮盖 掩码生成层:Embedding 和 Masking 函数式 API 和序列式 API 中的掩码传播 将掩码张量直接传递给层 在自定义层中支持遮盖 在兼容层上选择启用掩码传播 编写需要掩码信息的层 总结 使用预处理层 Keras 预处理 可用预处理 文本预处理 数值特征预处理 分类特征预处理 图像预处理 图像数据增强 adapt() 方法 在模型之前或模型内部预处理数据 推断时在模型内部进行预处理的好处 快速秘诀 图像数据增强 归一化数值特征 通过独热编码进行字符串分类特征编码 通过独热编码进行整数分类特征编码 对整数分类特征应用哈希技巧 将文本编码为词例索引序列 通过多热编码将文本编码为 ngram 的密集矩阵 通过 TF-IDF 加权将文本编码为 ngram 的密集矩阵 重要问题 处理包含非常大的词汇的查找层 在 TPU pod 上或与 ParameterServerStrategy 一起使用查找层。 Keras 中的循环神经网络 (RNN) 简介 设置 内置 RNN 层:简单示例 输出和状态 RNN 层和 RNN 单元 跨批次有状态性 RNN 状态重用 双向 RNN 性能优化和 CuDNN 内核 在可用时使用 CuDNN 内核 支持列表/字典输入或嵌套输入的 RNN 定义一个支持嵌套输入/输出的自定义单元 使用嵌套输入/输出构建 RNN 模型 使用随机生成的数据训练模型 保存和加载 Keras 模型 简介 如何保存和加载模型 安装 全模型保存和加载 API SavedModel 格式 SavedModel 包含的内容 SavedModel 处理自定义对象的方式 序贯模型示例: 如上例所示,加载器动态地创建了一个与原始模型行为类似的新模型。 函数式模型示例: 保存架构 序贯模型或函数式 API 模型的配置 API get_config() 和 from_config() to_json() 和 tf.keras.models.model_from_json() 仅加载 TensorFlow 计算图 定义配置方法 注册自定义对象 示例: 内存中模型克隆 您只需使用模型进行推断:在这种情况下,您无需重新开始训练,因此不需要编译信息或优化器状态。 用于内存中权重迁移的 API 用于将权重保存到磁盘并将其加载回来的 API TF 检查点格式 格式详细信息 迁移学习示例 HDF5 格式 迁移学习示例 序贯模型 安装 何时使用序贯模型 创建序贯模型 预先指定输入形状 常见的调试工作流:add() + summary() 有了模型后该怎么办 使用序贯模型进行特征提取 使用序贯模型进行迁移学习 使用内置方法进行训练和评估 设置 简介 API 概述:第一个端到端示例 compile() 方法:指定损失、指标和优化器 提供许多内置优化器、损失和指标 自定义损失 自定义指标 处理不适合标准签名的损失和指标 自动分离验证预留集 通过 tf.data 数据集进行训练和评估 使用验证数据集 支持的其他输入格式 使用 keras.utils.Sequence 对象作为输入 使用样本加权和类加权 类权重 样本权重 将数据传递到多输入、多输出模型 使用回调 提供多个内置回调 编写您自己的回调 为模型设置检查点 使用学习率时间表 将时间表传递给优化器 使用回调实现动态学习率时间表 可视化训练期间的损失和指标 使用 TensorBoard 回调 迁移学习和微调 设置 简介 冻结层:了解 trainable 特性 trainable 特性的递归设置 典型的迁移学习工作流 微调 使用自定义训练循环进行迁移学习和微调 端到端示例:基于 Dogs vs. Cats 数据集微调图像分类模型 获取数据 标准化数据 使用随机数据扩充 构建模型 训练顶层 对整个模型进行一轮微调 从头编写训练循环 设置 简介 使用 GradientTape:第一个端到端示例 指标的低级处理 使用 tf.function 加快训练步骤速度 对模型跟踪的损失进行低级处理 总结 端到端示例:从头开始的 GAN 训练循环