ONE - On-device Neural Engine
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
MaxPoolWithArgmaxChef Class Referencefinal

#include <MaxPoolWithArgmax.h>

Collaboration diagram for MaxPoolWithArgmaxChef:

Public Member Functions

 MaxPoolWithArgmaxChef (const tflchef::Operation *operation)
 
tflite::BuiltinOperator code (void) const override
 
tflite::BuiltinOptions type (void) const override
 
flatbuffers::Offset< void > value (flatbuffers::FlatBufferBuilder &fbb) const override
 
flatbuffers::Offset< flatbuffers::Vector< uint8_t > > custom_value (flatbuffers::FlatBufferBuilder &fbb) const override
 
- Public Member Functions inherited from OpChef
virtual ~OpChef ()=default
 
virtual ~OpChef ()=default
 

Detailed Description

Definition at line 22 of file MaxPoolWithArgmax.h.

Constructor & Destructor Documentation

◆ MaxPoolWithArgmaxChef()

MaxPoolWithArgmaxChef::MaxPoolWithArgmaxChef ( const tflchef::Operation *  operation)
inlineexplicit

Definition at line 25 of file MaxPoolWithArgmax.h.

25 : _operation{operation}
26 {
27 // DO NOTHING
28 }

Member Function Documentation

◆ code()

tflite::BuiltinOperator MaxPoolWithArgmaxChef::code ( void  ) const
inlineoverridevirtual

Implements OpChef.

Definition at line 31 of file MaxPoolWithArgmax.h.

31{ return tflite::BuiltinOperator_CUSTOM; }

◆ custom_value()

flatbuffers::Offset< flatbuffers::Vector< uint8_t > > MaxPoolWithArgmaxChef::custom_value ( flatbuffers::FlatBufferBuilder fbb) const
overridevirtual

REGISTER_OP("MaxPoolWithArgmax") .Attr("ksize: list(int) >= 4") .Attr("strides: list(int) >= 4") .Attr("Targmax: {int32, int64} = DT_INT64") .Attr(GetPaddingAttrString()) .Attr("include_batch_in_index: bool = false") .Input("input: T") .Output("output: T") .Output("argmax: Targmax") .Attr("T: realnumbertype") .SetShapeFn([](InferenceContext* c) { TF_RETURN_IF_ERROR(shape_inference::MaxPoolShape(c)); c->set_output(1, c->output(0)); return Status::OK(); });

Reimplemented from OpChef.

Definition at line 29 of file MaxPoolWithArgmax.cpp.

30{
31 auto &operation = (*_operation);
32
33 check_custom_op_value(operation, "MaxPoolWithArgmax");
34
53 auto flex_buffers = std::make_unique<flexbuffers::Builder>();
54 size_t map_start = flex_buffers->StartMap();
55
56 auto start = flex_buffers->StartVector("ksize");
57 flex_buffers->Add(1);
58 flex_buffers->Add(operation.max_pool_with_argmax_options().filter_width());
59 flex_buffers->Add(operation.max_pool_with_argmax_options().filter_height());
60 flex_buffers->Add(1);
61 flex_buffers->EndVector(start, /*typed=*/true, /*fixed=*/false);
62 start = flex_buffers->StartVector("strides");
63 flex_buffers->Add(1);
64 flex_buffers->Add(operation.max_pool_with_argmax_options().stride_w());
65 flex_buffers->Add(operation.max_pool_with_argmax_options().stride_h());
66 flex_buffers->Add(1);
67 flex_buffers->EndVector(start, /*typed=*/true, /*fixed=*/false);
68 auto output_type = operation.max_pool_with_argmax_options().output_type();
69 assert(output_type == tflchef::INT64 || output_type == tflchef::INT32);
70 flex_buffers->Int("Targmax", output_type);
71 std::string padding = operation.max_pool_with_argmax_options().padding() ? "VALID" : "SAME";
72 flex_buffers->String("padding", padding);
73 flex_buffers->Bool("include_batch_in_index",
74 operation.max_pool_with_argmax_options().include_batch_in_index());
75 flex_buffers->Int("T", tflchef::FLOAT32);
76 flex_buffers->EndMap(map_start);
77 flex_buffers->Finish();
78
79 auto circle_custom_options = fbb.CreateVector(flex_buffers->GetBuffer());
81}
void check_custom_op_value(const tflchef::Operation &operation, const std::string &op_type)
Definition OpUtils.cpp:21
Offset< Vector< T > > CreateVector(const T *v, size_t len)
Serialize an array into a FlatBuffer vector.
flatbuffers::Offset< flatbuffers::Vector< uint8_t > > circle_custom_options(flatbuffers::FlatBufferBuilder &fb, const luci::CircleNode *node)

References check_custom_op_value(), and flatbuffers::FlatBufferBuilder::CreateVector().

◆ type()

tflite::BuiltinOptions MaxPoolWithArgmaxChef::type ( void  ) const
inlineoverridevirtual

Implements OpChef.

Definition at line 33 of file MaxPoolWithArgmax.h.

33{ return tflite::BuiltinOptions_NONE; }

◆ value()

flatbuffers::Offset< void > MaxPoolWithArgmaxChef::value ( flatbuffers::FlatBufferBuilder fbb) const
overridevirtual

Implements OpChef.

Definition at line 23 of file MaxPoolWithArgmax.cpp.


The documentation for this class was generated from the following files: