记自动调参平台raytune和chemprop的一次实验

2023-11-07

首先介绍一下raytune这个东西,了解机器学习深度学习的朋友应该知道调参是机器学习中必不可少的一个环节,当你的模型被设计出来之后,或者你使用别人现成的模型的时候,你是要去调整模型的一个超参数从而是模型在你的数据集上达到一个比较好的效果的。通常的做法当然就是手动去设置参数然后跑一组组实验,最后选择一组结果较好的参数。但是在多GPU,你需要同时跑多组实验的时候,手动去跑多组实验是很麻烦的一件事,相信搞过的朋友一定懂。所以这里就需要一个类似于自动化训练平台的东西来帮助你找到比较优的一个参数,而raytune也就是干这个事情的。

由于这次不是主要讲raytune的,所以就简单写一下怎么用raytune,有兴趣的朋友可以自己去raytune的github首页去了解,链接已经放在最开始的部分了。raytune的搞法差不多就是将原来训练的一个个epoch拆开,一个epoch一个epoch去搞,因此你要做的事情主要有三个,分别是写好你的data_loadertrain_one_epochevaluate_one_epoch,函数的意思很简单,就是在一个epoch下train和evaluate,具体的实现和代码可以去参考raytune主页。

今天想记录一下的主要是在小数据集上如何使用raytune进行多模型的ensemble,问题源于一次实验,我们需要在小数据集上(不到3000)进行一次二分类问题的实验,由于数据集太小,训练的时候很容易过拟合而且数据集的划分也很容易存在train,valid,test上分布特征不一致的问题,就有可能valid上效果好但是test上面不行,或者valid上面不好但是test上面反而效果很好的问题。因此但次实验的结果是不准确的,所以需要做模型的ensemble。

在raytune中,你可以设置同时跑多个sample,一个sample对应的就是一组参数,原来一个sample中是一个model,但是现在一个sample中对应的多个model了,也就是多个model会share同一个初始参数,但是会在不同seed下random split的数据集上train和validate,最后在test上取平均,这样作用也就是减轻数据集小带来的问题。但是现在问题是,如何做validate?raytune上面是你需要让一个sample在validate之后返回一个评估值,单个模型的话直接返回auc或者acc就好了,但是多个模型呢?直接取平均?我一开始确实是没有多想直接取的平均,然鹅,这样做的效果其实并不好。。。然后老板直接提出应该要取一个sample中每个mode在所有epoch中最好的model,而不是取同一个epoch下的model,简单来说前者方便后者麻烦,但是后者显而易见更有效。

前者图示:
在这里插入图片描述
后者图示:
在这里插入图片描述

我按照后面这样改了,但是效果还是。。不好。。后来发现是因为我给每个sample中的model分的数据用的seed不是随机的,是0,1,2,3。。。结果导致每次都是第三个mode效果不好,就很迷。于是乎后来每份数据的seed用的都是随机数,效果一下子就上来了,平均test auc直接从0.87的蹦到了0.94,真的太神奇了。附上效果图:
在这里插入图片描述

总之就是数据集小的时候一定要做ensemble,而且要严格按照ensemble的方式去分数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

记自动调参平台raytune和chemprop的一次实验 的相关文章

随机推荐

  • Spider(网络蜘蛛)之ajax爬取douban电影排行和kfc门店数据

    爬前注意 首先douban的接口请求方式是get简单一点 寻找规律可以爬取数据 kfc的接口方式是post data所需要parse urlencode data encode utf 8 需要编码 编码和解码是两个相反的过程 字节 lt
  • 分布式事务框架Seata

    分布式事务框架Seata sei达 一 分布式事务前言 1 数据库管理系统中事务 transaction 的四个特性 简称ACID 这种特性简称刚性事物 原子性 Atomicity 原子性是指事务是一个不可再分割的工作单元 事务中的操作要么
  • 特征选择--scikit-learn

    特征选择 Feature Selection choosing a subset of all the features the ones more informative 最终得到的特征选是原来特征的一个子集 特征选取是机器学习领域非常重
  • synchronized方法和代码块

    1 同步 由于多线程并发存在数据不安全问题 为了保证数据的安全性需要一些特殊的手段来维持 数据不安全主要是针对修改来说的 如果一个数据只能读不能修改几乎不会产生什么安全问题 只有修改数据的时候容易产生一些差错导致多线程并发造成数据不安全 从
  • 清理 Ubuntu 系统的 4 个简单步骤

    清理 Ubuntu 系统的 4 个简单步骤 现在 试试看这 4 个简单的步骤 来清理你的 Ubuntu 系统吧 这份精简指南将告诉你如何清理 Ubuntu 系统以及如何释放一些磁盘空间 如果你的 Ubuntu 系统已经运行了至少一年 尽管系
  • js类型检测

    1 检测是否是字符串 function isString obj return Object prototype toString call obj object String 2 检测是否是对象 function isObject obj
  • 《视觉SLAM十四讲》第一版源码slambook编译调试

    slambook master ch2 编译正常 log如下 slambook master ch2 mkdir build cd build cmake make j8 The C compiler identification is G
  • python中去除字符串中 表示的空格

    去掉 nbsp 硬空格 必须在unicode下替换才行 如下所示 text replace u xa0 其中text就是包含 nbsp 的一个变量
  • Unity3D中API常用方法和类详细讲解 (Transform类)

    目录 Transform类 点击这里进入官网 该类表示的是对象的位置 旋转和缩放 Properties Transform parent public Transform parent 让一个游戏物体成为另一游戏物体的子对象 那么该物体的
  • 计算机考研复试上机算法学习

    计算机考研复试上机算法学习 这篇博客是博主在准备可能到来的线下上机复试基于王道机试指南的学习 将各道习题链接和代码记录下来 这篇博客权且当个记录 文章目录 计算机考研复试上机算法学习 1 STL容器学习 1 1 vector动态数组 1 1
  • mongoDB 一些操作命令

    如果你想创建一个 myTest 的数据库 先运行use myTest命令 之后就做一些操作 如 db createCollection user 这样就可以创 建一个名叫 myTest 的数据库 一 数据库常用命令 1 Help查看命令提示
  • 微信小程序调用微信支付

    1 首先肯定是要去微信公众平台申请接入微信支付 2 申请成功之后就可以调用商户号的接口进行微信支付交易了 3 携带的参数肯定是从后端接口拿取的 我们回调的时候直接拉起支付就可以了 wx showLoading title 处理中 调用后端接
  • 将docker容器设置为宿主机同一网段

    本文主要讲述 将docker的容器ip设置为宿主机同一网段 并且允许宿主机以及局域网其它机器访问它 创建docker的虚拟网络 本人局域网的网段为192 168 1 0 24 网关为路由器的192 168 1 1 docker networ
  • STM32F103ZET6【标准库函数开发】------09 高级定时器TIM1输出7个PWM,三对为互补PWM

    只有高级定时器可以输出互补的PWM 所以只有TIM1和TIM8可以实现这个功能 而TIM1又分为三种情况没有重映射 部分重映射 完全重映射 一 没有重映射 下面展示主要的time c main c函数的代码 void TIM1 PWM In
  • 机器人路径规划的算法有很多种,其中RRT算法是其中一种比较流行的算法之一

    机器人路径规划的算法有很多种 其中RRT算法是其中一种比较流行的算法之一 在这篇文章中 我们将为大家介绍如何使用Matlab实现基于RRT算法的机器人最短路径规划 并附上相应的源代码 我们首先需要明确RRT算法的基本思路 RRT全称为Rap
  • Android——Binder机制

    1 简介 Binder是什么 机制 Binder是一种进程间通信的机制 驱动 Binder是一个虚拟物理设备驱动 应用层 Binder是一个能发起进程间通信的JAVA类 Binder就是Android中的血管 在Android中我们使用Ac
  • Java设计模式之七大设计原则

    Java设计模式之七大设计原则 本文对Java设计模式中的七大设计原则进行汇总介绍 提炼最核心的概念 设计模式总结笔记 一 设计模式七大原则 设计模式的目的 代码可重用性 相同功能的代码 不用多次编写 可读性 编程规范性 便于其他程序员的阅
  • 基于TCP协议实现HTTP_GET请求

    前言 之前一直使用MQTT的物联网协议 偶然间发现互联网中HTTP的通信协议也应用广泛 想要更好的理解这个协议 可以基于tcp来实现这个协议 这样可以更理解底层组包结构 http与mqtt类似都是基于tcp udp 的基础上规范了传输的报文
  • 看完这篇,轻松get限流!

    引言 本文推选自 技思广益 腾讯技术人原创集 专栏 该专栏是腾讯云开发者社区为腾讯技术人与广泛开发者打造的分享交流窗口 栏目邀约腾讯技术人分享原创的技术积淀 与广泛开发者互启迪共成长 作者是腾讯云开发者社区的作者 一只小黄鱼 限流在确保现代
  • 记自动调参平台raytune和chemprop的一次实验

    首先介绍一下raytune这个东西 了解机器学习深度学习的朋友应该知道调参是机器学习中必不可少的一个环节 当你的模型被设计出来之后 或者你使用别人现成的模型的时候 你是要去调整模型的一个超参数从而是模型在你的数据集上达到一个比较好的效果的