一些教训¶
version control 版本控制¶
特别是需要将版本与实验结果关联起来, 并分离参数, 意思是,不要通过修改文件来修改实验参数
这样,能把实验结果与对应的代码版本关联起来, 并进行追踪
参数控制¶
用 argparse 这种, 把实验参数从代码中分离
训练集要打乱顺序¶
如 Pytorch dataloader 里的 shuffle=True
特别是在均匀分布时, 如果不随机打乱, 每个批次都极度不平衡
另外, 不同 loader 如果是随机顺序, 会影响全局的 seed
比如, test_loader 有没有拿来求每一个 epoch或批次的损失函数、 准确度, 会改变 seed, 造成训练结果变化
控制随机种子¶
set_frame_work(seed)
方便复现
一定要单步调试过一遍¶
特别是分支循环条件语句, 一定要确定符合预期
教训 self.no_stein 默认设置为 None, 结果 if self.no_stein is False 就错过了