深度学习是一门很难评估代码正确性的学科。随机初始化、庞大的数据集和权重的有限可解释性意味着,要找到模型为什么不能训练的确切问题,大多数时候都需要反复试验。在传统的软件开发中,自动化单元测试是确定代码是否完成预期任务的面包和黄油。它帮助开发人员信任他们的代码,并在引入更改时更加自信。一个破坏性的更改将会被单元测试检测到。
从 GitHub 上许多研究库的情况来看,深度学习的实践者们还不喜欢这种方法。从业者不知道他们的代码是否正常工作,他们能接受吗?通常,由于上述三个原因,学习系统的每个组件的预期行为并不容易定义。然而,我相信实践者和研究人员应该重新考虑他们对单元测试的厌恶,因为它可以帮助研[……]