如何对深度学习进行单元测试:TensorFlow 中的测试、模拟和测试覆盖率

使用 tf.test() 探索 TensorFlow 代码中的单元测试、模拟和修补对象、代码覆盖率以及机器学习应用程序中测试用例的不同示例

来源:AI夏令营

编写深度学习模型并不容易(我不会撒谎),但测试它更难。这就是为什么大多数 TensorFlow 和 PyTorch 代码不包含单元测试的原因。但是当您的代码将在生产环境中运行时,确保它确实按预期运行应该是优先事项。毕竟,机器学习与任何其他软件没有什么不同。

请注意,这篇文章是“生产中的深度学习”课程的第三部分,我们将在其中了解如何将笔记本转换为可以提供给数百万用户的生产就绪代码。

在“生产中的深度学习”课程中,我们将在其中了解如何将笔记本转换为可以提供给数百万用户的生产就绪代码。

在本文中,我们将重点介绍如何正确测试机器学习代码,分析编写单元测试时的一些最佳实践,并提供一些测试是必要的示例案例。我们将从为什么我们需要在代码中使用单元测试开始,然后快速了解 Python 测试的基础知识,最后讨论一些实际的现实场景。

为什么我们需要单元测试

在开发神经网络时,我们大多数人并不关心捕获所有可能的异常、查找所有极端情况或调试每个函数。我们只需要看到我们的模型适合。然后我们只需要提高其准确性,直到达到可接受的程度。这一切都很好,但是当模型部署到服务器中并用于实际面向公众的应用程序中时会发生什么?最有可能的是,它会崩溃,因为某些用户可能发送了错误的数据,或者因为一些无声的错误弄乱了我们的数据预处理管道。我们甚至可能会发现我们的模型实际上一直被破坏了。

这就是单元测试发挥作用的地方。在所有这些事情发生之前就防止它们发生。单元测试非常有用,因为它们:

单元测试
  • 尽早发现软件错误
  • 尽早发现软件错误

  • 调试我们的代码