【Python】NLP参数控制模板

news2024/9/24 11:20:34

前言

学过AI的都知道训练一个模型需要调整很多参数,为了有效的管理这些参数、不至于让代码的参数写的乱七八糟,有必要写一套控制参数的模板。

argparser

 argparser是python当中的参数解析器,在NLP当中主要是用来接受和使用参数的。一个使用它的简单流程如下:

  1. 创建参数解析器parser
  2. 给解析器parser添加参数,用来接收参数,可以是模型参数、训练参数等
  3. 将参数解析器接收到的参数解析出来放到args中,后续使用也从args中取参数即可

示例:

# 1.创建参数解析器parser
parser = argparse.ArgumentParser()
# 2.给解析器parser添加参数,用来接收参数
parser.add_argument('--test','-t', default='test ok!')
# 3.将参数解析器接收到的参数解析出来放到args中
args = parser.parse_args()
print(args)
print(args.test)

关于argparser的更多用法,感兴趣可以自行搜索。 

参数控制模板

import argparse

class Config:
    """model config"""
    def __init__(self) -> None:
        self.parser = self.setup_parser()
        self.args = vars(self.parser.parse_args())
        self.__dict__.update(self.args)

    def setup_parser(self):
        parser = argparse.ArgumentParser()
        parser.add_argument('--mode','-m', default='fintuned')
        return parser
    
if __name__ == '__main__':
    config = Config()
    print(config)
    print(config.mode)

可能有些人会疑惑直接按照上面argparser的三步走接受参数不久行了吗?

干嘛还加这两行:

self.args = vars(self.parser.parse_args())
self.__dict__.update(self.args)

解释一下,第一行的self.parser.parse_args()是上面argparser三步走中的第3步得到的结果,使用vars可以将这个结果转换成字典的形式,即参数:参数对应的值这种形式。

第二行的self.__dict__.update(self.args)是把上面得到的字典更新到自己的类里面,后面实例化之后就可以直接通过对象取到对应参数了。那取得的效果是啥呢?

我们看一下不加入这两行会发生什么?

import argparse

class Config:
    """model config"""
    def __init__(self) -> None:
        self.parser = self.setup_parser()
        self.args = self.parser.parse_args()
        # self.args = vars(self.parser.parse_args())
        # self.__dict__.update(self.args)

    def setup_parser(self):
        parser = argparse.ArgumentParser()
        parser.add_argument('--mode','-m', default='fintuned')
        return parser
    
if __name__ == '__main__':
    config = Config()
    print(config)
    print(config.mode)

报错,原因是因为Config类的对象config没有mode属性,事实上参数存储在config.args中了,因此取出“mode”参数应该用confgi.args.mode。

但是这样很麻烦,我们想直接通过config取参数,即config.mode,只需要加上上面两行即可!也就是最开始的模板,结果如下:

大功告成!以后写NLP或者其他AI代码,只需要用这一套模板,在其他python文件中实例化该类,就可以很方便的管理我们的参数了。

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

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

相关文章

Word技巧【自用】

表格断开 做到类似这样的效果,很简单,用边框刷就可以 设定边框的横线,以及磅值,就可以像画三线表一样断开了

vue el-dialog嵌入video实现视频播放功能

video嵌入dialog实现视频播放 业务需求1、实现的效果图3、全部代码(复制粘贴即可实现) 业务需求 弹窗实现视频播放&#xff0c;并且切换不同选项卡播放不同视频 1、实现的效果图 3、全部代码(复制粘贴即可实现) <template><el-button style"margin-left: 60px&q…

警惕: 新的 “RustBucket “恶意软件变种针对macOS用户

研究人员已经揭开了苹果macOS恶意软件RustBucket更新版本的序幕&#xff0c;该版本具有改进的能力&#xff0c;可以建立持久性并避免被安全软件发现。 安全实验室的研究人员在本周发表的一份报告中表示&#xff1a;RustBucket的变种是一个针对macOS系统的恶意软件集合&#xf…

Cisco ISR 1000 Series IOS XE Release Dublin-17.11.1a ED

Cisco ISR 1000 Series IOS XE Release Dublin-17.11.1a ED 思科 1000 系列集成多业务路由器 请访问原文链接&#xff1a;https://sysin.org/blog/cisco-isr-1000/&#xff0c;查看最新版。原创<品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org 思科 1000…

关于NISP,收藏这个就够了!

01 全面认知NISP 什么是NISP证书&#xff1f; 为提高各领域人才信息安全意识&#xff0c;落实国家信息安全人才培养战略&#xff0c;缓解我国信息安全领域专业人才存在的供需矛盾&#xff0c;加快我国信息安全专业人才队伍的建设&#xff0c;逐步形成一支政治可靠、技能过硬…

VUE小白学习-2023年6月7日

VUE小白学习-2023年6月7日 前端工程化 日期&#xff1a;2023年6月7日 前端工程化

SVN服务器简单配置过程

一、概述 SVN的全称是Subversion&#xff0c;是一个流行的开源的版本控制系统。Subversion可管理随时间改变的数据&#xff0c; 这些数据放置在一个中央资料档案库(repository) 中。 它就像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样当需要回退时&#xff0c;…

【Java可执行命令】(十)JAR文件签名工具 jarsigner:通过数字签名及验证保证代码信任与安全,深入解析 Java的 jarsigner命令~

Java可执行命令之jarsigner 1️⃣ 概念2️⃣ 优势和缺点3️⃣ 使用3.1 语法3.1.1 可选参数&#xff1a;jarsigner -keystore < url>3.1.2 可选参数&#xff1a;jarsigner -storepass <口令>3.1.3 可选参数&#xff1a;jarsigner -keypass <口令>3.1.4 可选参…

数字信号处理复习(一):离散傅里叶变换(DFT)

一&#xff1a;为什么需要离散傅里叶变换 我们知道在傅里叶变换中存在连续信号和离散信号变换从而诞生了有拉普拉斯变换&#xff08;连续信号&#xff09;、Z变换&#xff08;离散信号&#xff09;&#xff0c;这两种变换是方便以前没有计算机时工程师们手动计算傅里叶变换。而…

同构:编程中的数学(文末送书4本)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

多项目管理难在哪,多项目同时进行该如何做好进度管理?

最近&#xff0c;听到群里的项目经理吐槽&#xff0c;手上有10多个项目同时进行&#xff0c;工作起来手忙脚乱&#xff0c;杂乱无章&#xff0c;让他压力特别大。 对于项目经理来说&#xff0c;多项目并行推进的情况已是常态。从工作层面来说&#xff0c;不仅在各项目之间抢资…

解决 fatal: Authentication failed for ‘https://github.com/*/*.git/‘

原因&#xff1a;github 的认证策略发生了改变&#xff0c;在 2021年8月13日 的时候&#xff0c;用户名加密码的认证方式被去掉了&#xff0c;换成了 个人令牌&#xff08;Personal Access Token&#xff09;的校验方式。 官网解决方案&#xff1a;管理个人访问令牌 - GitHub …

数分面试题- 面试智力题

目录标题 1、如何用3L和5L桶量取4L水2、有两圈蚊香&#xff0c;一圈烧完需要1小时&#xff0c;怎么才能确定出15分钟/45分钟时间3、提灯过桥问题4、开关灯问题5、赛道赛跑问题6、砝码称重问题6.1 有10瓶药&#xff0c;每瓶有10粒药&#xff0c;其中有一瓶是变质的。好药每颗重1…

家政保洁维修上门预约系统开发;

家政保洁维修上门预约系统开发&#xff1b; 保洁&#xff0c;家电清洗等上门业务系统&#xff0c;支持派单接单&#xff0c;按区域&#xff0c;就近分配、套餐年卡等&#xff1b; 育婴月嫂系统 保姆筛选&#xff0c;简历主页&#xff0c;推荐跟进&#xff0c;在线合同&#xf…

IPO观察丨背靠百度、专注医疗内容营销,为何健康之路举步维艰?

互联网医疗赛道竞争加剧下&#xff0c;相关企业不仅在市场扩张上角逐&#xff0c;也在IPO道路上持续追赶。 仅就6月份而言&#xff0c;就有药师帮、方舟云康、健康之路等几家企业在持续推进上市进程&#xff0c;其中&#xff0c;药师帮已于6月28日成功登陆港交所&#xff0c;而…

pycharm断点调试

第一步&#xff1a;打上断点 第二步&#xff1a;进入调试模式 第三步&#xff1a;分析button作用 Resume Program&#xff1a;进入下一个断点show execution point (F10) &#xff1a;显示当前所有断点step over(F8) &#xff1a;单步调试&#xff0c;若函数A内存在子函数时&a…

改变下拉框中内容显示的顺序方法

在官网上&#xff1a; 如图所示&#xff1a;先点击龙须面&#xff0c;再点击虾仔煎的时候&#xff0c;会在下拉框中按照用户的点击顺序显示出来。 问题&#xff1a;前端如何按照黄金糕-双皮奶-虾仔煎-龙须面的顺序显示点击的值呢&#xff1f;这样做的一个好处就是按后端的顺序…

【2023】性感美少女-InsCode Stable Diffusion 美图活动一期

作者&#xff1a;闲散的不务正业的运维目录 一、 Stable Diffusion 模型在线使用地址&#xff1a;二、Stable Diffusion如何使用三、模型相关版本和参数配置&#xff1a;四、图片生成提示词与反向提示词&#xff1a;五、种子及对应图片&#xff1a;六、总结 一、 Stable Diffus…

Qt的发展如何?它是否是一个就业的好选择?

Qt是一种流行的跨平台应用程序开发框架&#xff0c;被广泛用于构建图形用户界面&#xff08;GUI&#xff09;和嵌入式应用程序。它具有良好的可移植性和可扩展性&#xff0c;并支持多种编程语言&#xff0c;如C、Python和JavaScript。 Qt的发展一直稳步推进&#xff0c;并且在…

I.MX6ULL_Linux_驱动篇(39) 阻塞和非阻塞IO

阻塞和非阻塞 IO 是 Linux 驱动开发里面很常见的两种设备访问模式&#xff0c;在编写驱动的时候一定要考虑到阻塞和非阻塞。本章我们就来学习一下阻塞和非阻塞 IO&#xff0c;以及如何在驱动程序中处理阻塞与非阻塞&#xff0c;如何在驱动程序使用等待队列和 poll 机制。 阻塞…