小编Abh*_*bhi的帖子

了解TensorFlow中的操作注册和内核链接

我是TensorFlow的新手,现在正在研究定制的op开发.我已经阅读了官方教程,但我觉得很多事情都发生在幕后,我并不总是想把我的自定义操作放在user_ops目录中.

因此,我了一个例子word2vec

它使用自定义的"Skipgram"操作,其注册定义如下:
/word2vec_o​​ps.cc
,其内核实现位于:
/word2vec_kernels.cc

查看构建文件,我尝试构建单个目标

1)bazel build -c opt tensorflow/models/embedding:word2vec_ops
这会按预期生成一堆目标文件.

2)bazel build -c opt tensorflow/models/embedding:word2vec_kernels
同样的.

3) bazel build -c opt tensorflow/models/embedding:word2vec_kernels:gen_word2vec

最后一个版本使用自定义规则,即tf_op_gen_wrapper_py https://github.com/tensorflow/tensorflow/blob/master/tensorflow/tensorflow.bzl#L197-L231

有趣的是,这只取决于操作注册而不是内核本身.

毕竟,如果我py_binary使用自己构建自己

bazel build -c opt tensorflow/models/embedding:word2vec

它工作正常,但我没有看到内核c ++代码链接的位置和方式?

另外,我还想了解tf_op_gen_wrapper_py操作注册的幕后规则和整个编译/链接过程.

谢谢.

c++ swig kernel registration tensorflow

7
推荐指数
1
解决办法
5679
查看次数

标签 统计

c++ ×1

kernel ×1

registration ×1

swig ×1

tensorflow ×1