训练日志——wandb
通过观察 (parameters 板块中) 参数值的分布是否趋于稳定,以及 梯度是否收敛到趋近于0,可以判断当前模型的收敛情况。会将数据记录到当前的历史记录,换句话说就是每次运行到这里,系统就会将log内的参数值自动上传更新,一般数据会直接绘制成表格。用于跟踪模型以及跟踪模型中的参数和梯度,并且支持可视化的展示训练过程中的参数和梯度的动态变化。这个函数的作用与平常定义类里面的init函数作用类似,
·
安装与登录
- 安装
pip install wandb
- 注册并登录
https://wandb.ai/site - 客户端登陆
在终端中输入wandb login
然后出现You can find you API key
的一串网站,点击进入,复制API key,然后返回终端粘贴回车
运行中遇到错误取这里查阅
基础使用与可视化
常用函数
wandb.init()
这个函数的作用与平常定义类里面的init函数作用类似,都是起初始化的作用
wandb.init(project='project',
entity='team_name',
name='run_name',
config=config)
- project:用于指定项目名称
wandb 在运行的过程中会自动帮你创建一个以此命名的项目文件,run 结果 都会存放在这个项目文件里。
如果没有指定项目名称,run 结果 会放在一个 “Uncategorized” 未分类项目中 - entity : 用户名或团队名称 (可以是团队或组织的名称,也可以是团队或组织的 ID),你可以将本次run 的记录发送到这个指定的用户名下 或 团队下。如果没有指定 entity,则记录将被发送到 您的用户名下。
- name:此次run的名称。不设置的话,默认情况下,会生成一个随机的两个单词的名称,
- conifg: 用于记录训练配置、超参数。传入的数据格式为 字典
例子
wandb.config()
用于保存训练配置,这些配置包含超参数、数据集名称、模型类型等
- 可以在 wandb.init() 中对 config 进行定义
- 之后可以使用 wandb.config.update() 对 config 进行追加。它将传入的键值对追加到 config 中。如果传入的键值对中包含已经存在的键,则将新值覆盖旧值。
- 如果在wandb.init() 中没有设置 conifg,那么就使用 wandb.config.update() 进行具体内容的输入。
例子
wandb.log()
会将数据记录到当前的历史记录,换句话说就是每次运行到这里,系统就会将log内的参数值自动上传更新,一般数据会直接绘制成表格。
wandb.log({"acc": acc,
"loss": loss})
例子
wandb.finish()
用于通知 Wandb 服务器该运行已经结束,并将所有数据上传到服务器。
wandb.watch()
用于跟踪模型以及跟踪模型中的参数和梯度,并且支持可视化的展示训练过程中的参数和梯度的动态变化
通过观察 (parameters 板块中) 参数值的分布是否趋于稳定,以及 梯度是否收敛到趋近于0,可以判断当前模型的收敛情况
wandb.watch(model, log="gradients", log_freq=1000, log_graph=False)
- models:要监控的模型。可以是单个模型,也可以是多个模型的列表
- log:要记录的指标。可以是 “gradients”、“parameters”、“all” 或 None, 默认值为 “gradients”
- log_freq:记录指标的频率,默认值为 1000
- log_graph:是否记录模型的图形,默认为 “False”
参考
参考了b站大佬enzo做的笔记
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献3条内容
所有评论(0)