testing - 修改 tensorflow 源代码的良好做法

标签 testing tensorflow bazel

我正在尝试修改 Tensorflow 源代码(核心)。

研究代码后,我开始修改、重新编译并运行我自己的测试。但我不确定我是否以最好的方式做到了这一点。所以我对此有一些疑问。

1 - 我需要重新编译所有 tensorflow 代码还是只重新编译修改后的模块?

2 - 为了实现修改,我是否总是从我的源代码创建一个 wheel 包并安装它?为什么我在bazel编译后可以直接集成修改?

3 - 测试代码的最佳方法是什么?有很多单元测试,我不知道如何正确使用它。

4 - 我正在使用 linux 的 bash 脚本来运行 bazel 命令,有更好的东西吗?

谢谢大家!

最佳答案

(根据对问题的评论总结)

在对 TensorFlow 本身进行更改时,无需为 TensorFlow 构建 pip 包。相反,bazel run <target>让您运行单元测试(bazel test 会将一个或多个测试的输出记录到一个文件中,而不是直接打印出来)。因此,例如,如果您正在修改一个热门操作 (tensorflow/core/kernels/one_hot_op.cc),您可能希望为该操作 (tensorflow/python/kernel_tests/one_hot_op_test.py) 运行 Python 单元测试套件:

bazel run //tensorflow/python/kernel_tests:one_hot_op_test

或者转到目录并使用相对构建目标:

cd python/kernel_tests
bazel run :one_hot_op_test

测试目标在 BUILD 文件中定义。对依赖项的任何更改都应自动获取。第一次运行后,编译应该会很快,因为大部分编译都会被缓存。

如果您正在开发最终将集成到使用 TensorFlow 的软件中的更改,那么如果您先对 TensorFlow 更改进行单元测试,然后再进行集成测试(例如,您将在其中捆绑将 TensorFlow 打包成 pip 包)。

关于testing - 修改 tensorflow 源代码的良好做法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44626098/

相关文章:

python - 没有名为 'uff' 的模块

bazel - 在 bazel 构建中使用生成的代码

带有数据存储库的 C++ Bazel 项目

用于获取页面的文件大小和加载时间的 PHP 函数

unit-testing - 如何在 Rust 中模拟特定方法而不是所有方法?

android - 如何将 Appium Espresso 与 Xamarin Forms 应用程序一起使用

python-2.7 - undefined symbol : cuDevicePrimaryCtxGetState when importing tensorflow

python - 使用 TF 2.0 将 saving_model 转换为 TFLite 模型

Bazel iOS 框架

php 单元测试 - 属性不存在