修改张量流源的良好实践

plo*_*bot 8 testing bazel tensorflow

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

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

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

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

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

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

谢谢大家!

All*_*oie 7

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

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

bazel run //tensorflow/python/kernel_tests:one_hot_op_test
Run Code Online (Sandbox Code Playgroud)

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

cd python/kernel_tests
bazel run :one_hot_op_test
Run Code Online (Sandbox Code Playgroud)

测试目标在BUILD文件中定义.应自动选择对依赖项的任何更改.在第一次运行之后,编译应该非常快速,因为大部分都将被缓存.

如果您正在开发最终将集成到使用TensorFlow的软件中的更改,那么如果您在进行集成测试之前首先对TensorFlow更改进行单元测试(例如,您将TensorFlow捆绑到其中),则可能会获得更愉快的体验.一个pip包).