总结超参数最优化

news/2024/5/10 4:06:39/文章来源:https://blog.csdn.net/weixin_43743847/article/details/127435323

1.超参数是什么? 超参数是指的是比如SGD的一个学习率,或者是抑制过拟合时候的一个权重衰减率参数等等,这些参数需要一个合适的值才能很好的提升神经网络的学习效率
2.我们在进行超参数最优化的时候如何去做到超参数最优化?
2.1.设定超参数的搜索范围
2.2.随机选择在这个范围内的超参数
2.3.反复循环1,2步骤,并且不断缩小搜索范围
3.首先为什么上面所说要缩小搜索范围,因为我们搜索最优超参数是通过不断缩小“最优值”的范围,在这个范围内寻找最优秀的参数,这样我们就可以寻找到最优超参数
4.我们在搜索最优超参数时候大概率会需要很久的时间,那么我们如何去缩短搜索时间呢?很简单,我们只需要把epoch调小,让搜索频率更快一点,这样我们就可以跳过很多没用的随机出来的值,实验代码如下:

coding: utf-8

import sys, os
sys.path.append(os.pardir) # 为了导入父目录的文件而进行的设定
import numpy as np
import matplotlib.pyplot as plt
from dataset.mnist import load_mnist
from common.multi_layer_net import MultiLayerNet
from common.util import shuffle_dataset
from common.trainer import Trainer

(x_train, t_train), (x_test, t_test) = load_mnist(normalize=True)

为了实现高速化,减少训练数据

x_train = x_train[:500]
t_train = t_train[:500]

分割验证数据

validation_rate = 0.20
validation_num = int(x_train.shape[0] * validation_rate)
x_train, t_train = shuffle_dataset(x_train, t_train)# 打乱数据集为了导致数据集没有偏向
x_val = x_train[:validation_num]#获取一部分训练数据集
t_val = t_train[:validation_num]#获取一部分教师数据集
x_train = x_train[validation_num:]#前面获得是验证数据集,那么前面就当作测试获取最优超参数的数据集和后面的训练数据集作为对比
t_train = t_train[validation_num:]

###注:::当验证数据集和训练数据集拟合的很好的情况下就说明超参数训练的相当不错
def __train(lr, weight_decay, epocs=50):#开始训练验证数据集
network = MultiLayerNet(input_size=784, hidden_size_list=[100, 100, 100, 100, 100, 100],#获取神经网络对象
output_size=10, weight_decay_lambda=weight_decay)
trainer = Trainer(network, x_train, t_train, x_val, t_val,#获取训练神经网络对象
epochs=epocs, mini_batch_size=100,
optimizer=‘sgd’, optimizer_param={‘lr’: lr}, verbose=False)
trainer.train()#开始训练

return trainer.test_acc_list, trainer.train_acc_list#获取最终的训练结果的精确率

超参数的随机搜索======================================

optimization_trial = 100#最优测试
results_val = {}#获取结果的值
results_train = {}#获取训练之后的值
for _ in range(optimization_trial):
# 指定搜索的超参数的范围===============
weight_decay = 10 ** np.random.uniform(-8, -4)#设定权值衰减系数
lr = 10 ** np.random.uniform(-6, -2)#设定学习率
# ================================================

val_acc_list, train_acc_list = __train(lr, weight_decay)#开始训练获取精确率
#输出教师数据集的最终精确率,打印学习率和权重衰减系数
print("val acc:" + str(val_acc_list[-1]) + " | lr:" + str(lr) + ", weight decay:" + str(weight_decay))
key = "lr:" + str(lr) + ", weight decay:" + str(weight_decay)
results_val[key] = val_acc_list
results_train[key] = train_acc_list

绘制图形========================================================

print(“=========== Hyper-Parameter Optimization Result ===========”)
graph_draw_num = 20
col_num = 5
row_num = int(np.ceil(graph_draw_num / col_num))
i = 0

for key, val_acc_list in sorted(results_val.items(), key=lambda x:x[1][-1], reverse=True):
print(“Best-” + str(i+1) + “(val acc:” + str(val_acc_list[-1]) + ") | " + key)

plt.subplot(row_num, col_num, i+1)
plt.title("Best-" + str(i+1))
plt.ylim(0.0, 1.0)
if i % 5: plt.yticks([])
plt.xticks([])
x = np.arange(len(val_acc_list))
plt.plot(x, val_acc_list)
plt.plot(x, results_train[key], "--")
i += 1if i >= graph_draw_num:break

plt.show()
在这里插入图片描述
5.上面这张图是我们选择学习率参数在1e-6到1e-2的范围和权重衰减系数在1e-8到1e-4的范围内的一个搜索训练结果,蓝色的线是训练集,黄色是验证数据集,验证数据集是用来搜索最优超参数的数据集,蓝色的训练集是为了最终和验证数据集训练的结果进行对比拟合程度,如果拟合程度相当高,那么说明对应参数很不错!
6.那么为啥拟合程度高就一定超参数训练的好呢? 原因在我理解为如果拟合程度高,说明对应数据集的泛化能力就很强,这个地方用验证数据集和训练数据集对比拟合程度,也就是精确率,就是为了表明,如果随机再挑选一部分数据集,我也可以让对应数据集和训练集的拟合程度很高,这样我们的神经网络就可以很好的拟合其他数据集,泛化能力强!(注意,我的验证数据集是从训练集中随机挑选了百分之20的实验数据)
7.我们发现best1到best5的图拟合程度很好!,那么我们就把对应的超参数范围缩小到前五个图范围之内,再次进行训练,缩小搜索范围,看看有什么神奇的发现把?
在这里插入图片描述
很明显,训练的拟合程度更好了,我们这个时候可以在这些图范围内选择一个拟合程度最好的超参数,然后进行实战训练我们的训练数据集,提升我们的神经网络训练效率

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

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

相关文章

盘点十大国内外热门的SaaS点评平台

在B端市场里,企业如何调研、选择企服软件是困扰已久的问题。使用者需要选择合适的企服软件去提升企业内部效率,因此,选择一个合适的SaaS点评平台便非常重要。在SaaS点评平台,使用者可以了解、选择产品,而服务商可以收获…

撰写SCI论文好用的免费工具(下) - 易智编译EaseEditing

书接上文。易智编译再推荐几种好用的写作工具: 7.Grammarly Grammarly是谷歌浏览器的一个扩展程序,可在浏览器任一窗口中检查你文字的拼写和语法。无论是使用Google文档编写,撰写电子邮件还是发布文章,Grammarly都会指出英语错误…

CNN的识别机制

搬来这个给自己学学~~ 所有基础都要写一个 大佬勿怪 只为自己学习 近年来,CNN 因其优异的性能,在计算机视觉、自然语言处理等各个领域受到了研究者们的青睐。但是,CNN 是一个 「黑盒」 模型,即模型的学习内容和决策过程很难用人类…

Blazor组件自做十 : 光学字符识别 OCR 组件

光学字符识别 OCR 组件 演示地址 https://blazor.app1.es/ocr使用方法手机或者电脑点击拍照OCR可启动相机拍照,或者点击文件OCR选择文件,稍等片刻即可获得OCR结果.直接输入Url可识别在线图片AI表格识别 AI Form 演示地址 https://blazor.app1.es/aiform

读《趣学算法》:重开算法之门,时间复杂度与空间复杂度

14天阅读挑战赛 一、前言 程序 数据结构 算法 时过境迁,自己早已把算法的基础忘记得干干净净,最近看到CSDN发起了《趣学算法》的14天阅读挑战赛,兴趣再次油然而起,既然想学,就不用那么计较,马上就开始&a…

web权限提升-令牌窃取烂土豆dll劫持

目录 (一)Windows2008&7令牌窃取提升-本地 0x01 前置知识——令牌(TOKEN) 令牌有很多种: MSF伪造令牌实战 0x02 原理和利用范围 (二)烂土豆提权 1. 原理: 总结 2.环境搭…

Cosmos模块化功能链 走向亿级用户的超级Dapp时代

前言 加密不缺故事,而 Aptos 贡献了一次事故。 Move 生态的威力不应被轻视,跟随 Aptos 主网上线的,已经有域名服务 Aptos Names、钱包 Pontem、多签钱包 Momentum Safe、NFT 市场 Souffl3、借贷协议 Argo。 这是第一次众多应用和主网一起上…

【预测模型-DELM分类】基于哈里斯鹰算法改进深度学习极限学习机实现数据分类附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

Kubernetes—k8s介绍

文章目录k8s是什么kubernetes的主要概念PodReplicaSetDeploymentLabelServiceKubernetes 架构及组件Kubernetes架构kubernetes组件k8s是什么 官方介绍: Kubernetes 也称为 K8s(中间8个字母,省略好记),是用于自动部署、…

垂钓图解教程: 鱼钩 All In One

垂钓图解教程: 鱼钩 All In One 鱼钩分类 鱼钩选择 线组搭配垂钓图解教程: 鱼钩 All In One 鱼钩分类有倒刺,无倒刺伊势尼 伊豆 新关东型号1, 2, 3, 4, 5, 6, 7, 8, 9 ...鱼钩选择依据目标鱼的类型 淡水鱼,海水鱼 底层鱼,中层鱼,上层鱼 食草性鱼,杂食性鱼,食肉性鱼目标鱼…

选择和循环结构的机器级表示

if-else两种机器级表示 注意区分条件转移和无条件转移指令 switch-case机器级表示 此处机器级代码是先判断了a>17和a<10时的default情况&#xff0c;然后10到17引用了跳转表&#xff0c;跳转表在目标文件的只读节中&#xff0c;按4字节边界对齐 但对于范围较大的swith-…

Spring Cloud Sleuth系列(1) — Sleuth环境搭建以及Feign整合调用分析

文章目录前言一、基础环境搭建1、项目环境搭建2、zipkin server启动3、基于Feign进行服务调用二、Sleuth Feign调用源码分析1、调用链分析2、Sleuth针对Feign进行的改造总结前言 该篇文章&#xff0c;主要介绍Spring Cloud Sleuth Zipkin基础环境搭建&#xff0c;以及基于源…

文华财经多个非常实用的期货指标公式,文华财经支撑压力自动画线公式

期货指标公式是通过数学逻辑角度计算而来&#xff0c;仅是期货分析环节中的一个辅助工具。期货市场具有不确定性和不可预测性的&#xff0c;请正常对待和使用指标公式! 期货指标公式信号本身就有滞后性&#xff0c;周期越大&#xff0c;滞后性越久。指标公式不是100%稳赚的工具…

畅享云原生超融合技术成果

作者&#xff1a;Vishal Ghariwala&#xff0c;SUSE 亚太及大中华区 CTO 超融合是服务器虚拟化和 VSAN 存储的必然发展结果。通过将存储、计算和网络这三大要素相集成&#xff0c;理论上数据中心对基础设施的控制能力可以无限扩展。这与超大规模运营商的发展目标高度契合&#…

电影主题HTM5网页设计作业成品——爱影评在线电影(10页面)使用dreamweaver制作采用DIV+CSS进行布局

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…

【AGC035E】Develop(图论,DP)

对于某个集合 S⊆{1,⋯,n}S\subseteq\{1,\cdots,n\}S⊆{1,⋯,n}&#xff0c;考虑能不能删去 SSS。 对于任意 x∈Sx\in Sx∈S&#xff0c;连边 x→x−2x\to x-2x→x−2&#xff08;如果 x−2∈Sx-2\in Sx−2∈S&#xff09;及 x→xkx\to xkx→xk&#xff08;如果 xk∈Sxk\in Sx…

Ajax的概念及jQuery中的Ajax的3种方法,模仿jQuery封装自己的Ajax函数

目录一、网页中如何请求数据资源的请求方式二、Ajax1、什么是Ajax2、Ajax的特点3、Ajax工作原理4、同步与异步的区别三、jQuery中的Ajax1、$.get()函数2、$.post()函数3、$.ajax()函数四、模仿jQuery封装自己的Ajax函数实现效果1、定义options参数选项2、定义resoveData()函数处…

Clustering and Projected Clustering with Adaptive Neighbors

摘要 在本文中&#xff0c;提出了一种新的聚类模型来同时学习数据相似矩阵和聚类结构。新模型通过基于局部距离为每个数据点分配自适应和最优邻居来学习数据相似性矩阵。同时&#xff0c;对数据相似性矩阵的拉普拉斯矩阵施加新的秩约束&#xff0c;使得得到的相似性矩阵中的连…

特殊的线性规划:目标函数中的变量数目少于约束中的变量数目

如下&#xff0c;目标函数为min(x1)&#xff0c;该函数中只存在一个变量x1&#xff0c;但是约束中存在x2变量&#xff0c;线性规划还能求解吗&#xff1f;如下&#xff0c;目标函数为min (x_1)&#xff0c;该函数中只存在一个变量x_1&#xff0c;但是约束中存在x_2变量&#xf…

ES Elasticsearch

ES 本章知识点 三 ES简介 3.1 数据分类 我们生活中的数据总体分为三种&#xff1a;结构化数据&#xff0c;非结构化数据&#xff0c;半结构化数据结构化数据&#xff1a;指具有固定格式或有限长度的数据&#xff0c;如数据库&#xff0c;元数据等。 非结构化数据&#xff1…