/* Copyright 2022 The TensorFlow Authors. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ==============================================================================*/ #ifndef TENSORFLOW_MODELS_SEQ_FLOW_LITE_TFLITE_OPS_DENYLIST_H_ #define TENSORFLOW_MODELS_SEQ_FLOW_LITE_TFLITE_OPS_DENYLIST_H_ #include <string> #include <vector> #include "absl/container/flat_hash_set.h" #include "absl/strings/str_format.h" #include "absl/strings/string_view.h" #include "flatbuffers/flexbuffers.h" // flatbuffer #include "tensorflow/lite/context.h" namespace seq_flow_lite { namespace ops { namespace custom { namespace denylist { /* * A framework for writing ops that generate prediction vectors using a * denylist. * * Input is defined by the specific implementation. * * Attributes: * denylist: string[n] * Terms in the denylist. * denylist_category: int[n] * Category for each term in the denylist. Each category must be in * [0, categories). * categories: int[] * Total number of categories. * negative_categories: int[] * Total number of negative categories. * * Output: * tensor[0]: Category indicators for each message, float[..., categories] * */ class DenylistOp { … }; // Individual ops should define an Init() function that returns a // DenylistOp. void Free(TfLiteContext* context, void* buffer); TfLiteStatus Resize(TfLiteContext* context, TfLiteNode* node); TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node); } // namespace denylist } // namespace custom } // namespace ops } // namespace seq_flow_lite #endif // TENSORFLOW_MODELS_SEQ_FLOW_LITE_TFLITE_OPS_DENYLIST_H_