Как написать пользовательские операции на C , которые обновляют переменные ресурсов?

#c #tensorflow

#c #tensorflow

Вопрос:

Я пытаюсь обновить оптимизаторы, подобные тем, которые https://github.com/openai/blocksparse/blob/master/blocksparse/optimize.py для поддержки параметров, хранящихся в виде переменных ресурса. Глядя на исходный код TensorFlow для встроенных операций оптимизатора, кажется необходимым иметь относительно сложную логику блокировки и копирования при записи для обработки различных состояний, в которых может находиться переменная ресурса. Для этого TensorFlow использует вспомогательные функции в tensorflow/core/kernels/training_op_helpers.h, вызывая MaybeLockVariableInputMutexesInOrder и GetInputTensorFromVariable .

К сожалению, training_op_helpers.h этого нет в общедоступных заголовках TensorFlow, поэтому я не могу просто #include это сделать. Хуже того, это зависит от внутренних функций, которые libtensorflow_framework.so даже не экспортируются (в частности, tensorflow::functor::DenseUpdate для копирования при записи), поэтому копирования заголовков также недостаточно.

Есть ли предполагаемый способ сделать что-то подобное? На данный момент у меня возникает соблазн скомпилировать собственную ветку TensorFlow, которая экспортирует эти функции. (Я думаю, их переопределение было бы не так уж плохо.)

Комментарии:

1. github.com/tensorflow/tensorflow/issues/27899