Помогают защитить Большой Барьерный Риф с TensorFlow на Kaggle Присоединяйтесь вызов

Поддерживаемые операторы Select TensorFlow

Основные операторы TensorFlow

Ниже приводится исчерпывающий список основных операций TensorFlow, которые поддерживаются средой выполнения TensorFlow Lite с помощью функции Select TensorFlow Ops.

Операторы TensorFlow Text и SentencePiece

Следующее TensorFlow Текстовые и SentencePiece операторы поддерживаются , если вы используете API Python для преобразования и импортировать эти библиотеки.

Операторы TF.Text:

  • CaseFoldUTF8
  • ConstrainedSequence
  • MaxSpanningTree
  • NormalizeUTF8
  • NormalizeUTF8WithOffsetsMap
  • RegexSplitWithOffsets
  • RougeL
  • SentenceFragments
  • SentencepieceOp
  • SentencepieceTokenizeOp
  • SentencepieceTokenizeWithOffsetsOp
  • SentencepieceDetokenizeOp
  • SentencepieceVocabSizeOp
  • SplitMergeTokenizeWithOffsets
  • UnicodeScriptTokenizeWithOffsets
  • WhitespaceTokenizeWithOffsets
  • WordpieceTokenizeWithOffsets

Операторы предложения:

  • SentencepieceGetPieceSize
  • SentencepiecePieceToId
  • SentencepieceIdToPiece
  • SentencepieceEncodeDense
  • SentencepieceEncodeSparse
  • SentencepieceDecode

В следующем фрагменте показано, как преобразовать модели с помощью указанных выше операторов:

import tensorflow as tf
# These imports are required to load operators' definition.
import tensorflow_text as tf_text
import sentencepiece as spm

converter = tf.lite.TFLiteConverter.from_keras_model(your_model)
converter.target_spec.supported_ops = [
  tf.lite.OpsSet.TFLITE_BUILTINS, tf.lite.OpsSet.SELECT_TF_OPS
]
model_data = converter.convert()

На стороне выполнения также требуется связать библиотеку TensorFlow Text или SentencePiece с окончательным приложением или двоичным файлом.

Операторы, определяемые пользователем

Если вы создали свои собственные операторы TensorFlow , вы можете также конвертировать модели , содержащие их TensorFlow Lite, перечислив необходимые операторы в experimental_select_user_tf_ops следующим образом :

import tensorflow as tf

ops_module = tf.load_op_library('./your_ops_library.so')

converter = tf.lite.TFLiteConverter.from_saved_model(your_model)
converter.target_spec.supported_ops = [
  tf.lite.OpsSet.TFLITE_BUILTINS, tf.lite.OpsSet.SELECT_TF_OPS
]
converter.target_spec.experimental_select_user_tf_ops = [
    'your_op_name1',
    'your_op_name2'
]
model_data = converter.convert()

На стороне выполнения также необходимо связать вашу библиотеку операторов с конечным приложением или двоичным файлом.

Добавьте основные операторы TensorFlow в список разрешенных.

Если вы попали в случае , когда основные TensorFlow операторы не в выше разрешенном списке , вы можете сообщить запрос функции в здесь с именами основных TensorFlow операторов, не перечисленные в списке разрешенного.

Вы также можете создать собственный пул-реквест из исходного кода. Например, если вы хотите добавить raw_ops.StringToNumber цит в списке разрешенных, есть три места для обновления , как это совершить .

(1) Добавить исходный код ядра оператора к portable_extended_ops_group2 правилам BUILD.

filegroup(
    name = "portable_extended_ops_group2",
    srcs = [
        ...
+       "string_to_number_op.cc",

        ...
    ],
)

Для того , чтобы найти исходные тексты ядра файла relvant оператора под tensorflow/core/kernels каталога, вы можете найти местоположение исходного кода, который содержит следующую декларацию ядра с именем оператора:

REGISTER_KERNEL_BUILDER(Name("StringToNumber")                 \
                            .Device(DEVICE_CPU)                \
                            .TypeConstraint<type>("out_type"), \
                        StringToNumberOp<type>)

Если есть какие - либо файлы заголовков под tensorflow/core/kernels каталог, необходимый в исходных текстах ядра оператора кода, вам нужно добавить файл заголовка в portable_extended_ops_headers правила BUILD , как следует:

filegroup(
    name = "portable_extended_ops_headers",
    srcs = [
        ...
+       "string_util.h",

        ...
    ],
)

(2) Добавьте имя оператора в список разрешенных.

Список разрешенных определяется в tensorflow/lite/delegates/flex/allowlisted_flex_ops.cc . Имя основного оператора TensorFlow должно быть указано в списке, чтобы его можно было разрешить с помощью параметра Select TF.

static const std::set<std::string>* allowlisted_flex_ops =
    new std::set<std::string>({
        ...
+       "StringToNumber",

        ...
    });

Поскольку приведенный выше список отсортирован в алфавитном порядке, имя должно быть размещено в нужном месте.

(3) Добавьте имя оператора на эту страницу руководства.

Чтобы показать включение оператора другим разработчикам, эту страницу руководства также следует обновить. Эта страница находится на tensorflow/lite/g3doc/guide/op_select_allowlist.md .

## TensorFlow core operators

The following is an exhaustive list of TensorFlow core operations that are
supported by TensorFlow Lite runtime with the Select TensorFlow Ops feature.

...
+*   `raw_ops.StringToNumber`
...

Поскольку приведенный выше список отсортирован в алфавитном порядке, имя должно быть размещено в нужном месте.