ONE - On-device Neural Engine
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
onert::backend::builtin::train::kernel::PermuteLayer Class Reference

#include <PermuteLayer.h>

Collaboration diagram for onert::backend::builtin::train::kernel::PermuteLayer:

Public Member Functions

 PermuteLayer (const std::vector< ITensor * > &src_tensors, const std::vector< ITensor * > &dst_tensors, const std::vector< ITensor * > &input_back_prop_tensors, const std::vector< ITensor * > &output_back_prop_tensors, const std::vector< ir::PermuteType > &types, bool ignore_forward_in_training, const std::shared_ptr< ExternalContext > &external_context)
 
void optimize () override
 
void forward (bool training) override
 
void backward () override
 
- Public Member Functions inherited from onert::backend::builtin::kernel::PermuteLayer
 PermuteLayer (const std::vector< ITensor * > &src_tensors, const std::vector< ITensor * > &dst_tensors, const std::vector< ir::PermuteType > &types, const std::shared_ptr< ExternalContext > &external_context)
 
void run () override
 
- Public Member Functions inherited from onert::exec::IPermuteFunction
virtual void prepare () override
 
- Public Member Functions inherited from onert::exec::IFunction
virtual ~IFunction ()=default
 
- Public Member Functions inherited from onert::exec::train::ITrainableFunction
virtual ~ITrainableFunction ()=default
 
virtual std::optional< backend::train::LayerScopeTensorsregisterLayerScopeTensors ()
 

Additional Inherited Members

- Protected Member Functions inherited from onert::exec::IPermuteFunction
void permute (backend::ITensor *src_tensor, backend::ITensor *dst_tensor, size_t rank, std::vector< size_t > &src_offsets, std::vector< size_t > &dst_offsets, const ir::PermuteType &permute_type)
 
const std::type_info & underlying_type (ir::DataType type) const
 
- Protected Attributes inherited from onert::exec::IPermuteFunction
std::vector< backend::ITensor * > _src_tensors
 
std::vector< backend::ITensor * > _dst_tensors
 
std::vector< std::vector< size_t > > _src_tensors_offsets
 
std::vector< std::vector< size_t > > _dst_tensors_offsets
 
std::vector< ir::PermuteType_permute_types
 
std::unordered_map< const backend::ITensor *, std::vector< uint8_t > > _buffers_map
 

Detailed Description

Definition at line 27 of file PermuteLayer.h.

Constructor & Destructor Documentation

◆ PermuteLayer()

onert::backend::builtin::train::kernel::PermuteLayer::PermuteLayer ( const std::vector< ITensor * > &  src_tensors,
const std::vector< ITensor * > &  dst_tensors,
const std::vector< ITensor * > &  input_back_prop_tensors,
const std::vector< ITensor * > &  output_back_prop_tensors,
const std::vector< ir::PermuteType > &  types,
bool  ignore_forward_in_training,
const std::shared_ptr< ExternalContext > &  external_context 
)

Definition at line 24 of file PermuteLayer.cc.

31 : builtin::kernel::PermuteLayer{src_tensors, dst_tensors, types, external_context},
32 _input_back_prop_tensors{input_back_prop_tensors},
33 _output_back_prop_tensors{output_back_prop_tensors},
34 _ignore_forward_in_training{ignore_forward_in_training}
35{
36 assert(input_back_prop_tensors.size() == output_back_prop_tensors.size());
37 assert(src_tensors.size() == dst_tensors.size());
38}

Member Function Documentation

◆ backward()

void onert::backend::builtin::train::kernel::PermuteLayer::backward ( )
overridevirtual

Implements onert::exec::train::ITrainableFunction.

Definition at line 55 of file PermuteLayer.cc.

56{
57 for (uint32_t i = 0; i < _output_back_prop_tensors.size(); ++i)
58 {
59 auto src_back_prop = _output_back_prop_tensors.at(i);
60 auto dst_back_prop = _input_back_prop_tensors.at(i);
61
62 // NOTE The back propagation tensors corresponding to inputs/outputs of model are nullptr
63 // because permuting those tensors is meaningless
64 if (src_back_prop && dst_back_prop)
65 {
66 const auto rank = src_back_prop->getShape().rank();
67 auto output_offsets = _dst_tensors_offsets.at(i);
68 auto input_offsets = _src_tensors_offsets.at(i);
69 auto permute_type = _permute_types.at(i);
70
71 exec::IPermuteFunction::permute(src_back_prop, dst_back_prop, rank, output_offsets,
72 input_offsets, permute_type);
73 }
74 }
75}
std::vector< std::vector< size_t > > _dst_tensors_offsets
std::vector< ir::PermuteType > _permute_types
void permute(backend::ITensor *src_tensor, backend::ITensor *dst_tensor, size_t rank, std::vector< size_t > &src_offsets, std::vector< size_t > &dst_offsets, const ir::PermuteType &permute_type)
std::vector< std::vector< size_t > > _src_tensors_offsets

References onert::exec::IPermuteFunction::_dst_tensors_offsets, onert::exec::IPermuteFunction::_permute_types, onert::exec::IPermuteFunction::_src_tensors_offsets, and onert::exec::IPermuteFunction::permute().

◆ forward()

void onert::backend::builtin::train::kernel::PermuteLayer::forward ( bool  training)
overridevirtual

Implements onert::exec::train::ITrainableFunction.

Definition at line 47 of file PermuteLayer.cc.

48{
49 if (_ignore_forward_in_training)
50 return;
51
53}

References onert::backend::builtin::kernel::PermuteLayer::run().

◆ optimize()

void onert::backend::builtin::train::kernel::PermuteLayer::optimize ( )
overridevirtual

Reimplemented from onert::backend::builtin::kernel::PermuteLayer.

Definition at line 40 of file PermuteLayer.cc.

41{
43
44 // TODO Calculate offsets of back propagation tensors if necessary
45}

References onert::backend::builtin::kernel::PermuteLayer::optimize().


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