【问题标题】:How to create an op like conv_ops in tensorflow?如何在 tensorflow 中创建类似 conv_ops 的操作?
【发布时间】:2016-07-13 09:18:05
【问题描述】:

我要做什么

我是 C++ 和 bazel 的新手,我想对 tensorflow 中的卷积操作进行一些更改,所以我决定我的第一步就是创建一个类似的操作。

我做了什么

我从 //tensorflow/core/kernels 复制了 conv_ops.cc 并更改了在我的 new_conv_ops.cc 中注册的操作的名称。我还更改了文件中函数的一些名称以避免重复。这是我的 BUILD file.

如您所见,我从 //tensorflow/core/kernels/BUILD 复制了 conv_ops 的 deps 属性。然后我使用“bazel build -c opt //tensorflow/core/user_ops:new_conv_ops.so”来构建新的操作。

我的问题是什么

然后我得到了这个error.

我尝试删除 bounds_check 并在下一个部门遇到同样的错误。然后我意识到在 //tensorflow/core/user_ops 的 //tensorflow/core/kernels 中包含 h 文件存在一些问题。那么我怎样才能完美地创建一个像 conv_ops 这样的新操作呢?

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    教程 here 中介绍了向 TensorFlow 添加自定义操作。也可以查看实际代码examples

    要解决您的具体问题,请注意tf_custom_op_library 宏将大部分必要的依赖项添加到您的目标。您可以简单地编写以下内容:

    tf_custom_op_library(
      name="new_conv_ops.so",
      srcs=["new_conv_ops.cc"]
    )
    

    【讨论】:

    • 非常感谢您的回答!但是,如果像上面那样简单地编写 BUILD 文件,则会出现错误,说“此规则缺少以下包含的文件的依赖项声明”,并且提到了我包含在我的 BUILD 文件中的文件。我在网上做了一些搜索,在 //tensorflow/core 的 BUILD 文件中找到了 user_ops_op_lib 的 cc_library 定义。我在库的 deps 属性中添加了所需的文件,但它不起作用。所以我想也许我应该在我的 .so 文件的 BUILD 中定义依赖权。
    • 我也看过你上面提到的实际代码示例,但是它们不涉及//tensorflow/core/kernels等中的h文件的任何依赖。所以我想知道是否还有更多复杂示例(不仅包括 op.h 和 op_kernel.h 的操作)
    • 嗨,我在添加新操作时遇到了类似的问题。你能解决这个问题吗?我很乐意在这方面获得帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-30
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    • 1970-01-01
    相关资源
    最近更新 更多