python - 每次运行(使用 pytorch+cuda)在批量标准化时都是不同的,即使是在 RNG 播种的情况下
问题描述
当没有批量规范层的模型执行相同时,为什么我的具有批量规范层的模型在每次运行时表现不同。在我的模型中,随机种子由以下人员设置:
np.random.seed(args.seed)
torch.manual_seed(args.seed)
random.seed(args.seed)
torch.cuda.manual_seed_all(args.seed)
os.environ['PYTHONHASHSEED'] = str(args.seed)
在删除批量规范层并维护其他设置后,我的模型产生了相同的结果。
解决方案
看来您还需要包括以下行:
torch.backends.cudnn.deterministic = True
为了强制算法的 cuda 部分在 PyTorch 的批处理规范中具有确定性。这里有更多细节。
推荐阅读
- browser - P5.JS Sketch 不会在浏览器中加载
- python - model_evaluation_utils 混淆矩阵出错
- scala - Spark:对象不可序列化
- python - 为什么我得到退出代码 -1 却没有在 IDE 中显示任何错误?
- python - 如何从 PDF(Python PDFminer)中提取指数?
- reactjs - 未触发 useEffect
- string - Octave 中的函数 strfind() 未在文本文件中找到双换行符
- python - 用 Python 装饰一个类,打印装饰类的 int 变量
- android - 使用 Android 打开蓝牙会使其成为信标吗?
- arrays - 电子表格减少了二维范围内的 JS 类函数?