修改张量流源的良好实践

时间:2017-06-19 08:53:53

标签: testing tensorflow bazel

我试图修改Tensorflow源代码(核心)。

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

1 - 我是否需要重新编译所有tensorflow代码或仅修改模块?

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

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

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

谢谢大家!

1 个答案:

答案 0 :(得分:5)

(总结来自对该问题的评论)

在开发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包。)