我正在尝试修改Tensorflow源代码(核心)。
在研究了代码之后,我开始修改、重新编译并运行我自己的测试。但我不确定我是不是在以最好的方式做这件事。因此,我对此有一些问题。
1-我需要重新编译所有的tensorflow代码还是只重新编译修改后的模块?
2-为了实现修改,我总是需要从我的源码创建一个轮子包并安装它吗?为什么可以在bazel编译后直接集成修改?
3-测试代码的最佳方法是什么?有很多单元测试,我不知道如何正确使用它。
4-我正在使用linux的bash脚本来运行bazel命令,还有更好的方法吗?
谢谢大家!
发布于 2017-06-28 01:17:56
(从对问题的评论中总结)
在开发对TensorFlow本身的更改时,不需要为TensorFlow构建pip包。相反,bazel run <target>允许您运行单元测试(bazel test会将一个或多个测试的输出记录到一个文件中,而不是直接打印出来)。因此,例如,如果您正在修改一个热op (tensorflow/core/kernels/one_hot_op.cc),您可能希望为该op (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测试目标在构建文件中定义。对依赖关系的任何更改都应该自动获取。在第一次运行之后,编译应该非常快,因为大部分都将被缓存。
如果您正在开发最终将被集成到使用TensorFlow的软件中的更改,那么如果您先对TensorFlow更改进行单元测试,然后再进行集成测试(例如,将TensorFlow捆绑到一个pip包中),这可能会是一种更愉快的体验。
https://stackoverflow.com/questions/44626098
复制相似问题