1. 常见配置文件格式
1.2 XML: Extensible Markup Language
.xml
文件可以用浏览器直接打开查看;
2. 参数管理——hydra
可以使用hydra
库来进行参数配置;
3. 配置文件对比
3.1 Vimdiff:在终端进行文件对比
使用
vimdiff file1 file2
在终端显示file1和file2的不同之处;
关于vimdiff
的相关具体的使用方法,请参考rollingstarky的博文《vimdiff 命令使用介绍》(以下简称为“vimdiff介绍”);
我们参照“vimdiff介绍”来进行学习,首先看看vimdiff
的显示规则:
从图中可以看到vimdiff
的显示有如下特点,
- 单独存在的行背景色标记为蓝色,而另一文件中的对应位置则被标记为绿色,(或者说,相对于另一个文件,当前文件中“多余”的行标记为蓝色,“缺少”的行则标记为绿色)
- 同时存在但是内容有差异的行,都标记为粉色,而引起差异的文字记为红色。
4. 实验记录:
4.1 TensorBoard
from torch.utils.tensorboard import SummaryWriter
import numpy as np
writer = SummaryWriter()
for n_iter in range(100):
writer.add_scalar('Loss/train', np.random.random(), n_iter)
writer.add_scalar('Loss/test', np.random.random(), n_iter)
writer.add_scalar('Accuracy/val', np.random.random(), n_iter)
4.2 Wandb
Wandb: Weights & Biases | Quickstart
4.2.1 常用提示词
已知此图片是 Weights & Biases(Wandb)的页面截图,请描述此图片的内容
4.2.1 常见API
Wandb.init():初始化项目记录器
import wandb # 引入wandb
wandb.init(project="my_project_name", name="curr_run")
# name表示此次运行的名称
project
表示当前项目的名称,会显示在面板的Projects中,如图所示
Wandb.config:记录当前运行的超参数
# 更新超参数信息
wandb.config.update({"learning_rate": 0.001,
"epochs": 100,
"batch_size": 128})
Wandb.log:在迭代过程中记录日志信息
# 记录损失函数值
wandb.log({"loss": 99})
# 在字典中记录多个信息
wandb.log({
"Test Accuracy": 100. * correct / len(data_loader.dataset),
"Test Loss": test_loss})
4.2.2 Numbers
对于数值型指标,wandb可以显示指标的折线图:
4.2.3 Images
Wandb支持保存图像的数组:
list_images =[]
list_images.append(wandb.Image("下载.jpeg", caption="Input image"))
list_images.append(wandb.Image("下载.jpeg", caption="Input image"))
list_images.append(wandb.Image("下载.jpeg", caption="Input image"))
wandb.log({
"images_examples": list_images, })
效果如图所示,
4.2.4 修改已有run的日志信息:run.update()
import wandb
api = wandb.Api()
run = api.run("songyuc/my_project_name/<run_id>")
run.config["key"] = updated_value
run.update()
4.2.5 查看实验记录
(1)在 run workspace 界面不能删除当前run记录,需要点击左上方【Runs】回到上一层界面进行删除
5. 备注
5.1 yacs
:参数配置库 (Deprecated)
我们已经弃用了这个参数配置的package,已经根据其GitHub[yacs]显示,最近的更新在“2020年8月11日”,基本可以认为这个项目已经停止维护了。
安装yacs
使用命令
conda install yacs
参数设置
使用yacs
进行参数管理的使用样例
# 引入配置节点类CfgNode
from yacs.config import CfgNode as CN
# 新建根节点
_C = CN()
_C.BATCH_SIZE = 256 # batch_size
_C.DATA = 'coco' # dataset name
获取参数信息
cfg = _C
# 输出config中的batch-size大小
print(cfg.BATCH_SIZE)
修改配置参数
使用cfg.merge_from_list
函数来修改配置参数,
opts = ["BATCH_SIZE", "512"]
cfg.merge_from_list(opts)
print(cfg)