/tensorflow/core/user_ops
カスタム Op 用のカーネルを実装し、それをasに入れましたcustom_op.cc
。Op 内では、 や などのすべての登録作業を行いREGISTER_OP
ますREGISTER_KERNEL_BUILDER
。
次に、この Op のグラデーションを Python で実装し、 と同じフォルダーに配置しましたcustom_op_grad.py
。ここでもすべての登録を行いました ( @ops.RegisterGradient
)。
次の内容の BUILD ファイルを作成しました。
load("//tensorflow:tensorflow.bzl", "tf_custom_op_library")
tf_custom_op_library(
name = "custom_op.so",
srcs = ["custom_op.cc"],
)
py_library(
name = "custom_op_grad",
srcs = ["custom_op_grad.py"],
srcs_version = "PY2",
deps = [
":custom_op_grad",
"//tensorflow:tensorflow_py",
],
)
その後、Tensorflow を再構築します。
pip uninstall tensorflow
bazel clean
bazel build -c opt //tensorflow/tools/pip_package:build_pip_package
cp -r bazel-bin/tensorflow/tools/pip_package/build_pip_package.runfiles/__main__/* bazel-bin/tensorflow/tools/pip_package/build_pip_package.runfiles/
bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
pip install /tmp/tensorflow_pkg/tensorflow-0.8.0-py2-none-any.whl
このすべての後に Op を使用しようとすると、tf.user_ops.custom_op
それを呼び出すと、モジュールにそれがないことがわかります。
多分私がしなければならないいくつかの追加のステップがありますか?または、ファイルに何か問題がありBUILD
ますか?