【发布时间】:2017-08-02 09:36:39
【问题描述】:
我正在尝试确定在从源代码构建 TensorFlow 时,bazel 如何生成 gen_io_ops 模块。
在tensorflow/python/ops/io_ops.py中有这段代码:
from tensorflow.python.ops.gen_io_ops
[...]
# used in the TextLineReader initialization
rr = gen_io_ops._text_line_reader_v2(...)
指的是bazel-genfiles/tensorflow/python/ops/gen_io_ops.py 模块(由 bazel 在构建 TensorFlow 时生成)。_text_line_reader_v2 是tensorflow/tensorflow/core/kernels/text_line_reader_op.cc 中定义的TextLineReaderV2 的包装器。
据我了解,构建步骤如下:
1)text_line_reader_op的内核库内置在tensorflow/tensorflow/core/kernels/BUILD中
tf_kernel_library(
name = "text_line_reader_op",
prefix = "text_line_reader_op",
deps = IO_DEPS,)
tf_kernel_library 基本上在哪里寻找 text_line_reader_op.c 文件并构建它。
2) :text_line_reader_op 内核库随后被the same file 中定义的io 库用作依赖项:
cc_library(
name = "io",
deps = [
":text_line_reader_op", ...
],
)
我想io 库现在包含TextLineReaderV2kernel 的定义。
根据我从answer 得到的信息,应该有一个第三步,其中io 库用于生成bazel-genfiles/tensorflow/python/ops/gen_io_ops.py 模块中的python 包装器。这个文件生成可以通过巴塞尔的tf_op_gen_wrapper_py 规则或tf.load_op_library() 方法来完成,但似乎都没有涉及。
有人知道第三步在构建过程中的定义位置吗?
【问题讨论】:
标签: python c++ tensorflow bazel