Почему тензорный поток не подхватывает мой собственный оператор и не возвращает ошибку «нет атрибута»?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему тензорный поток не подхватывает мой собственный оператор и не возвращает ошибку «нет атрибута»?

Сообщение Anonymous »

Недавно я пытался добавить в тензорный поток собственный оператор, который требует от меня выполнения специальной сборки. К сожалению, мне не удается зарегистрировать оператор, и возникает следующая ошибка: AttributeError: модуль '012ff3e36e3c24aefc4a3a7b68a03fedd1e7a7e1' не имеет атрибута 'Resample'
Команды, которые я использую для построения тензорного потока с пользовательским оператором следующие, порядок сохраняется:

Код: Выделить всё

bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package --local_ram_resources=4096 --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0"

./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

pip install /tmp/tensorflow_pkg/tensorflow-2.5.3-cp36-cp36m-linux_x86_64.whl

bazel build --config=opt //tensorflow/core/user_ops:Resampler.so --local_ram_resources=6000 --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0"

Это после перемещения операторов в каталог tensorflow/tensorflow/core/user_ops вместе с файлом сборки, который выглядит следующим образом:

Код: Выделить всё

load(
"//tensorflow/core/platform:rules_cc.bzl",
"cc_library",
)
load(
"//tensorflow:tensorflow.bzl",
"tf_copts",
)

package(
default_visibility = [
"//tensorflow/core:__pkg__",
],
licenses = ["notice"],  # Apache 2.0
)

cc_library(
name = "user_ops_op_lib",
srcs = glob(["*.cc"]),
hdrs = glob(["*.h"]),
copts = tf_copts(),
linkstatic = 1,
visibility = ["//tensorflow/core:__pkg__"],
deps = ["//tensorflow/core:framework"],
alwayslink = 1,
)

load("//tensorflow:tensorflow.bzl", "tf_custom_op_library")

tf_custom_op_library(
name = "Resampler.so",

Целевой версией tensorflow является 2.5.x.
Обратите внимание, что пользовательский оператор также содержит следующий регистрационный код в Resampler.cc:

Код: Выделить всё

REGISTER_OP("Resample")
.Attr("T: {float, int32}")
.Input("input_image: T")
.Input("transformation: float")
.Input("output_size: int32")
.Output("output_image: T")
...
#define REGISTER_CPU(T)                                                \
REGISTER_KERNEL_BUILDER(                                           \
Name("Resample").Device(DEVICE_CPU).TypeConstraint("T"),   \
ResamplerOp);
Как ни странно, кажется, что если я затем переименую операторную функцию в своем коде и продолжу попытки перекомпоновки, иногда оператор в конечном итоге регистрируется. Но повторная попытка с нуля с новым именем не работает, заставляя меня думать, что что-то не так с моим порядком действий. Мне еще предстоит найти воспроизводимый порядок событий для успешной регистрации оператора, поэтому буду благодарен за любую помощь!

Подробнее здесь: https://stackoverflow.com/questions/786 ... s-no-attri
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»