我试图修改Tensorflow源代码(核心)。
在研究代码后,我开始修改,重新编译并运行自己的测试。但我不确定我是否能以最好的方式做到这一点。所以我对此有一些疑问。
1 - 我是否需要重新编译所有tensorflow代码或仅修改模块?
2 - 为了实现修改,我是否总是从我的源创建一个wheel包并安装它?为什么我可以在bazel编译后直接集成修改?
3 - 测试代码的最佳方法是什么?有很多单元测试,我不知道如何正确使用它。
4 - 我使用bash脚本运行bazel命令,还有更好的东西吗?
谢谢大家!
答案 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包。)