Keras深度学习框架第二十八讲:可视化超参数调优过程

1、绪论

可视化超参数调优过程(Visualize the hyperparameter tuning process)指的是在机器学习或深度学习的模型训练中,通过图形化或可视化的方式展示和调整模型的超参数(hyperparameters)。这个过程有助于用户直观地理解超参数如何影响模型的性能,从而找到最优的超参数设置。可视化工具可以显示不同超参数组合下的模型性能(如准确率、损失函数值等),帮助用户更快地确定最佳的超参数设置。

1.1 Keras tuner超参数调优的可视化需求

KerasTuner 在屏幕上打印日志,包括每次试验中的超参数值,以供用户监控进度。但是,仅通过读取日志来感知超参数对结果的影响并不直观。因此,我们提供了一种方法,使用 TensorBoard 的交互式图表来可视化超参数值和相应的评估结果。

TensorBoard 是一个用于可视化机器学习实验的有用工具。它可以监控模型训练过程中的损失和指标,并可视化模型架构。将 KerasTuner 与 TensorBoard 结合使用,可以利用其 HParams 插件来可视化超参数调优结果。

我们将使用一个简单的例子来展示如何为 MNIST 图像分类数据集调整模型,并说明如何使用 KerasTuner 与 TensorBoard。

2、Keras tuner超参数调优可视化

2.1 下载和格式化数据

import numpy as np
import keras_tuner
import keras
from keras import layers(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
# Normalize the pixel values to the range of [0, 1].
x_train = x_train.astype("float32") / 255
x_test = x_test.astype("float32") / 255
# Add the channel dimension to the images.
x_train = np.expand_dims(x_train, -1)
x_test = np.expand_dims(x_test, -1)
# Print the shapes of the data.
print(x_train.shape)
print(y_train.shape)
print(x_test.shape)
print(y_test.shape)

2.2 编写build_model函数

接下来,我们编写一个 build_model 函数,用于根据超参数构建模型并返回该模型。这些超参数包括要使用的模型类型(多层感知器或卷积神经网络)、层数、单元数或滤波器数以及是否使用丢弃层(dropout)。

def build_model(hp):inputs = keras.Input(shape=(28, 28, 1))# Model type can be MLP or CNN.model_type = hp.Choice("model_type", ["mlp", "cnn"])x = inputsif model_type == "mlp":x = layers.Flatten()(x)# Number of layers of the MLP is a hyperparameter.for i in range(hp.Int("mlp_layers", 1, 3)):# Number of units of each layer are# different hyperparameters with different names.x = layers.Dense(units=hp.Int(f"units_{i}", 32, 128, step=32),activation="relu",)(x)else:# Number of layers of the CNN is also a hyperparameter.for i in range(hp.Int("cnn_layers", 1, 3)):x = layers.Conv2D(hp.Int(f"filters_{i}", 32, 128, step=32),kernel_size=(3, 3),activation="relu",)(x)x = layers.MaxPooling2D(pool_size=(2, 2))(x)x = layers.Flatten()(x)# A hyperparamter for whether to use dropout layer.if hp.Boolean("dropout"):x = layers.Dropout(0.5)(x)# The last layer contains 10 units,# which is the same as the number of classes.outputs = layers.Dense(units=10, activation="softmax")(x)model = keras.Model(inputs=inputs, outputs=outputs)# Compile the model.model.compile(loss="sparse_categorical_crossentropy",metrics=["accuracy"],optimizer="adam",)return model

2.3 测试模型

我们可以快速测试一下这些模型,以检查无论是卷积神经网络(CNN)还是多层感知器(MLP),它们是否都能成功构建。

# Initialize the `HyperParameters` and set the values.
hp = keras_tuner.HyperParameters()
hp.values["model_type"] = "cnn"
# Build the model using the `HyperParameters`.
model = build_model(hp)
# Test if the model runs with our data.
model(x_train[:100])
# Print a summary of the model.
model.summary()# Do the same for MLP model.
hp.values["model_type"] = "mlp"
model = build_model(hp)
model(x_train[:100])
model.summary()

2.4 初始化RandomSearch 调优器

初始化一个 RandomSearch 调优器,进行10次试验,并使用验证准确率作为选择模型的指标。

tuner = keras_tuner.RandomSearch(build_model,max_trials=10,# Do not resume the previous search in the same directory.overwrite=True,objective="val_accuracy",# Set a directory to store the intermediate results.directory="/tmp/tb",
)

2.5 执行搜索

通过调用 tuner.search(…) 来开始搜索。为了使用 TensorBoard,我们需要将一个 keras.callbacks.TensorBoard 实例传递给 callbacks 参数。

tuner.search(x_train,y_train,validation_split=0.2,epochs=2,# Use the TensorBoard callback.# The logs will be write to "/tmp/tb_logs".callbacks=[keras.callbacks.TensorBoard("/tmp/tb_logs")],
)

如果在 Colab(Google Colaboratory)中运行,以下两个命令将在 Colab 内部显示 TensorBoard。

%load_ext tensorboard
%tensorboard --logdir /tmp/tb_logs

你将能够访问 TensorBoard 的所有常用功能。例如,你可以查看损失和指标曲线,以及可视化不同试验中的模型计算图。

损失和指标曲线:这些曲线展示了在训练过程中损失函数和评估指标(如准确率)的变化。

计算图:这显示了模型的计算结构,包括层、激活函数、连接等。

除了这些功能外,TensorBoard 还提供了一个 HParams 标签页,其中包含三种视图。在表格视图中,你可以在一个表格中查看 10 个不同的试验,每个试验具有不同的超参数值和评估指标。这使得你能够直观地比较不同超参数设置对模型性能的影响。

在左侧,你可以为某些超参数指定筛选条件。例如,你可以指定仅查看没有使用丢弃层(dropout layer)且具有1到2个全连接层(dense layers)的多层感知器(MLP)模型。这样,TensorBoard 的 HParams 视图将只展示符合这些筛选条件的试验结果,帮助你更集中地分析这些特定配置下的模型性能。

除了表格视图外,TensorBoard 还提供了其他两种视图:平行坐标视图和散点图矩阵视图。它们只是用于展示相同数据的不同可视化方法。你仍然可以使用左侧的面板来过滤结果。

在平行坐标视图中,每条彩色线代表一次试验。坐标轴代表超参数和评估指标。这个视图允许你直观地看到不同超参数和评估指标之间的关系,以及它们如何共同影响模型的性能。通过观察这些线条的走势,你可以发现哪些超参数对模型性能的影响最大,或者找到可能的超参数组合,以进一步优化模型。

在散点图矩阵视图中,每个点代表一次试验。这些图是试验在不同平面上投影的结果,其中不同的超参数和指标作为坐标轴。这种视图方式允许你直观地看到超参数和指标之间的相关性,以及它们如何共同影响模型的性能。通过观察这些散点图,你可以发现不同超参数组合对模型性能的影响,并找到可能的优化方向。

3、结论

超参数调优是机器学习模型训练过程中至关重要的一步,因为它涉及选择模型的最佳配置以优化性能。在调优过程中,可视化工具如TensorBoard提供了强大的支持,帮助研究人员和开发者直观地理解超参数对模型性能的影响。

通过TensorBoard的HParams插件,我们可以方便地可视化超参数调优的结果。TensorBoard提供了三种视图来展示这些数据:

  1. 表格视图(Table View):表格视图以表格的形式展示了每次试验的超参数设置和评估指标。这允许用户快速浏览和比较不同试验的结果,以找到最优的超参数组合。

  2. 平行坐标视图(Parallel Coordinates View):在这个视图中,每次试验用一条彩色线表示,而坐标轴则是超参数和评估指标。通过观察线条的走势,用户可以直观地看到不同超参数和评估指标之间的关系,以及它们如何共同影响模型的性能。

  3. 散点图矩阵视图(Scatter Plot Matrix View):散点图矩阵视图展示了试验在不同平面上的投影,其中不同的超参数和指标作为坐标轴。这种视图方式可以帮助用户发现超参数和指标之间的相关性,以及它们对模型性能的共同影响。

这些视图不仅提供了丰富的可视化选项,还允许用户通过左侧的面板来过滤结果,以便更集中地分析符合特定条件的试验。这种灵活性使得TensorBoard成为超参数调优过程中不可或缺的工具。

总之,通过TensorBoard等可视化工具,我们可以更直观地理解超参数对模型性能的影响,从而更有效地进行超参数调优。这不仅提高了模型训练的效率和准确性,还为机器学习领域的研究和应用提供了有力的支持。

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

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

相关文章

SaaS增长三大策略:从用户获取到留存转化的全链路解析

在SaaS(软件即服务)行业中,增长是企业成功的关键。然而,要实现持续增长并非易事,需要一套从用户获取到留存转化的全链路策略。 首先,用户获取是SaaS增长的第一步。 这要求企业明确目标用户群体&#xff0…

【LeetCode】【9】回文数(1047字)

文章目录 [toc]题目描述样例输入输出与解释样例1样例2样例3 提示进阶Python实现 个人主页:丷从心 系列专栏:LeetCode 刷题指南:LeetCode刷题指南 题目描述 给一个整数x,如果x是一个回文整数,返回true;否…

C# VSTO读取Excel单元格Value、Value2

对单个单元格的值,需要用object 对象去接 object value (object)oneCellRange.Value; object value2 (object)oneCellRange.Value2; 对矩形范围的值,需要用object[,]去接 object[,] matrixValues (object[,])matrixRange.Value; object[,] matrixV…

centos 安装docker及docker-compose

安装docker yum install -y yum-utils yum-config-manager \--add-repo \http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum makecache fase yum install -y docker-ce docker-ce-cli containerd.io systemctl start docker systemctl enable docker dock…

【NumPy】关于numpy.sort()函数,看这一篇文章就够了

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

MongoDB数据库清理策略: 自动化过期数据删除实战

1、引言 随着应用程序和业务数据的持续增长,有效地管理数据库存储空间成为维护系统性能的关键。在MongoDB这类NoSQL数据库中,定期清理过期数据变得尤为重要,这不仅能释放宝贵的存储资源,还能优化查询性能,确保数据库运…

Qt 对话框或者QMainWindow等类中调用自定义QWidget继承组件

简单的方法如下所示 1、创建一个ui文件,界面布局放入QVBoxLayout或者QHBoxLayout 使用他来放入自定义组件,类似如下 2、代码如下: ui.setupUi(this); { //自定义组价如下 KwTable *Table new KwTable(this); ui.vertical…

为什么要有NOC

如果是AHB,注意AXI并不真的定义了总线,更多是接口。 那么如何实现上面的带宽,延迟需求呢。 在异构,多时钟;大芯片,物理面积很大,延迟太长;片上系统,IP众多,总…

包装设计的七个秘诀

大家都知道,包装设计的好与坏不等于企业的好,但是消费者会有先入为主的想法,如果一个企业连包装设计都不重视,那么谁来重视产品质量呢?无可否认,对产品的评价首先是质量,但质量之后,…

【OpenVINO™】在C#中使用 OpenVINO™ 部署 YOLOv10 模型实现目标

文章目录 1. 前言1.1 OpenVINO™ C# API1.2 YOLOv10 2. 模型获取2.1 源码下载2.2 配置环境2.3 下载模型 3. Yolov10 项目配置3.1 项目创建与环境配置3.2 定义模型预测方法3.2.1 定义目标检测模型方法3.2.2 使用OpenVINO™ 预处理接口编译模型 3.2 模型预测方法调用 4. 项目运行…

文心智能体之情感领航员:你的智能情感导师

文章目录 引言情感领航员的诞生与定位情感领航员的优势与特点专业性个性化便捷性隐私保护 如何创建自己的智能体创建方式智能体名称和设定基础配置角色与目标指导原则限制澄清个性化 高级配置保存 /发布流量数据分析智能体调优 总结 引言 在现代社会中,情感问题的普…

[CISCN2024]-PWN:orange_cat_diary(glibc2.23.,仅可修改最新堆块,house of orange)

查看保护 查看ida 这里我们仅可以修改最新申请出来的堆块,但是有uaf漏洞。 完整exp: from pwn import* #context(log_leveldebug) pprocess(./orange) free_got0x201F78def alloc(size,content):p.sendlineafter(bPlease input your choice:,b1)p.send…

行转列——kettle开发14

一、行转列 如图所示,行转列就是把数据字段的字段名转换为一列,把数据行变成数据列。即我们将昨天输出的张三在周一至周日的工作小时转换为7行数据。对应7行数据分别为张三在周一工作多个小时,在周二工作多少个小时等等。 我们来看下行转列组…

pycharm打开服务器(linux)上的项目

先在本地打开项目 一、项目文件配置 tools-deployment-configuration 新增一个sftp连接 测试服务器是否可以连通 mappings中设置本地路径和服务器上的路径 二、环境配置 先参考文章 复现论文的conda环境(win和联网、离线linux)_conda复现环境-CSDN博…

有个小伙把 MyBatis 替换成 MyBatis-Plus,上线后就被开了!!

MyBatis-Plus 替换 MyBatis 首先,我们准备了一张名为 tbl_order 的表,并初始化了其中的两条数据。 DROP TABLE IF EXISTS tbl_order; CREATE TABLE tbl_order (id bigint(0) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 自增主键,order_no varchar(50)…

【加密与解密(第四版)】第十八章笔记

第十八章 反跟踪技术 18.1 由BeginDebugged引发的蝴蝶效应 IsDebuggerPresent()函数读取当前进程PEB中的BeginDebugged标志 CheckRemoteDebuggerPresent() 反调试总结:https://bbs.kanxue.com/thread-225740.htm https://www.freebuf.com/articles/others-articl…

如何在工信部教考中心官网查询PG证书

1.第一步:进入工业和信息化部教育与考试中心官网 2.第二步:点击最右边“证书查询” 3.点击“工业和信息化部教育与考试中心培训评价证书查询” 4.在该页面按照如下方式进行证书查询:输入您的证件号码和您的证书号码以及姓名,点…

蓝桥杯备赛——DP续【python】

一、小明的背包2 试题链接:https://www.lanqiao.cn/problems/1175/learning/ 输入示例 5 20 1 6 2 5 3 8 5 15 3 3 输出示例 120 问题分析 这题是完全背包,每个物品有无数个,所以对于任意dp[i][j](其表示的意思为选到第i个…

算法设计第七周(应用哈夫曼算法解决文件归并问题)

一、【实验目的】 (1)进一步理解贪心法的设计思想 (2)掌握哈夫曼算法的具体应用 (3)比较不同的文件归并策略,探讨最优算法。 二、【实验内容】 设S{f1,…,fn}是一组不同的长度的有序文件构…

基于springboot+vue的仓库管理系统

免费获取方式↓↓↓ 项目介绍029: http://localhost:8081/ eclipse mysql jdk1.8 密码admin root 用户员(id 账号 密码 年龄 角色 电话) 仓库表(id 名称 备注) 分类表(id 名称 备注) 记录表(id…