Class cv::dnn::EinsumLayer#

This function performs array summation based on the Einstein summation convention. The function allows for concise expressions of various mathematical operations using subscripts. View details

Collaboration diagram for cv::dnn::EinsumLayer:

cv::dnn::EinsumLayer Node1 cv::dnn::EinsumLayer   + create() Node2 cv::dnn::Layer   + Layer() + Layer() + ~Layer() + alwaysSupportInplace() + dump() + dumpAttrs() + dynamicOutputShapes() + finalize() + finalize() + finalize() and 27 more... Node2->Node1 Node3 cv::Algorithm   + Algorithm() + ~Algorithm() + clear() + empty() + getDefaultName() + read() + save() + write() + write() + load() + loadFromString() + read() # writeFormat() Node3->Node2 Node4 std::vector< cv::Mat >     Node4->Node2 +blobs Node5 cv::Mat   + Mat() + Mat() + Mat() + Mat() + Mat() + Mat() + Mat() + Mat() + Mat() + Mat() and 152 more... + diag() + eye() + eye() + getDefaultAllocator() + getStdAllocator() + ones() + ones() + ones() + ones() + setDefaultAllocator() + zeros() + zeros() + zeros() + zeros() # forEach_impl() Node5->Node4 +elements Node6 int     Node6->Node2 +preferableTarget Node6->Node5 +cols +dims +dummy +flags +rows Node15 cv::dnn::Arg   + Arg() + Arg() + empty() Node6->Node15 +idx Node7 uint8_t     Node7->Node5 +data +dataend +datalimit +datastart Node8 cv::MatAllocator   + MatAllocator() + ~MatAllocator() + allocate() + allocate() + copy() + deallocate() + download() + getBufferPoolController() + map() + unmap() + upload() Node8->Node5 +allocator Node9 UMatData *     Node9->Node5 +u Node10 MatSize     Node10->Node5 +size Node11 MatStep     Node11->Node5 +step Node12 std::vector< T >     Node12->Node4 < cv::Mat > Node14 std::vector< cv::dnn ::Arg >     Node12->Node14 < cv::dnn::Arg > Node13 T     Node13->Node12 +elements Node14->Node2 +inputs +outputs Node15->Node14 +elements Node16 void *     Node16->Node2 +netimpl Node17 std::string     Node17->Node2 +name +type Node18 std::basic_string< Char >     Node18->Node17

cv::dnn::EinsumLayer Node1 cv::dnn::EinsumLayer   + create() Node2 cv::dnn::Layer   + Layer() + Layer() + ~Layer() + alwaysSupportInplace() + dump() + dumpAttrs() + dynamicOutputShapes() + finalize() + finalize() + finalize() and 27 more... Node2->Node1 Node3 cv::Algorithm   + Algorithm() + ~Algorithm() + clear() + empty() + getDefaultName() + read() + save() + write() + write() + load() + loadFromString() + read() # writeFormat() Node3->Node2 Node4 std::vector< cv::Mat >     Node4->Node2 +blobs Node5 cv::Mat   + Mat() + Mat() + Mat() + Mat() + Mat() + Mat() + Mat() + Mat() + Mat() + Mat() and 152 more... + diag() + eye() + eye() + getDefaultAllocator() + getStdAllocator() + ones() + ones() + ones() + ones() + setDefaultAllocator() + zeros() + zeros() + zeros() + zeros() # forEach_impl() Node5->Node4 +elements Node6 int     Node6->Node2 +preferableTarget Node6->Node5 +cols +dims +dummy +flags +rows Node15 cv::dnn::Arg   + Arg() + Arg() + empty() Node6->Node15 +idx Node7 uint8_t     Node7->Node5 +data +dataend +datalimit +datastart Node8 cv::MatAllocator   + MatAllocator() + ~MatAllocator() + allocate() + allocate() + copy() + deallocate() + download() + getBufferPoolController() + map() + unmap() + upload() Node8->Node5 +allocator Node9 UMatData *     Node9->Node5 +u Node10 MatSize     Node10->Node5 +size Node11 MatStep     Node11->Node5 +step Node12 std::vector< T >     Node12->Node4 < cv::Mat > Node14 std::vector< cv::dnn ::Arg >     Node12->Node14 < cv::dnn::Arg > Node13 T     Node13->Node12 +elements Node14->Node2 +inputs +outputs Node15->Node14 +elements Node16 void *     Node16->Node2 +netimpl Node17 std::string     Node17->Node2 +name +type Node18 std::basic_string< Char >     Node18->Node17

Public Member Functions#

Public Member Functions inherited from cv::dnn::Layer

Return

Name

Description

Layer()

Layer(const LayerParams & params)

Initializes only name, type and blobs fields.

~Layer()

bool

alwaysSupportInplace()

std::ostream &

dump(
    std::ostream & strm,
    int indent,
    bool comma )

std::ostream &

dumpAttrs(
    std::ostream & strm,
    int indent )

bool

dynamicOutputShapes()

void

finalize(
    const std::vector< Mat * > & input,
    std::vector< Mat > & output )

Computes and sets internal parameters according to inputs, outputs and blobs.

std::vector< Mat >

finalize(const std::vector< Mat > & inputs)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

void

finalize(
    const std::vector< Mat > & inputs,
    std::vector< Mat > & outputs )

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

void

finalize(
    InputArrayOfArrays inputs,
    OutputArrayOfArrays outputs )

Computes and sets internal parameters according to inputs, outputs and blobs.

void

forward(
    InputArrayOfArrays inputs,
    OutputArrayOfArrays outputs,
    OutputArrayOfArrays internals )

Given the input blobs, computes the output blobs.

void

forward(
    std::vector< Mat * > & input,
    std::vector< Mat > & output,
    std::vector< Mat > & internals )

Given the input blobs, computes the output blobs.

void

forward_fallback(
    InputArrayOfArrays inputs,
    OutputArrayOfArrays outputs,
    OutputArrayOfArrays internals )

Given the input blobs, computes the output blobs.

int64

getFLOPS(
    const std::vector< MatShape > & inputs,
    const std::vector< MatShape > & outputs )

int

getLayouts(
    const std::vector< DataLayout > & actualInputs,
    std::vector< DataLayout > & desiredInputs,
    const int requiredOutputs,
    std::vector< DataLayout > & outputs )

bool

getMemoryShapes(
    const std::vector< MatShape > & inputs,
    const int requiredOutputs,
    std::vector< MatShape > & outputs,
    std::vector< MatShape > & internals )

void

getScaleShift(
    Mat & scale,
    Mat & shift )

Returns parameters of layers with channel-wise multiplication and addition.

void

getScaleZeropoint(
    float & scale,
    int & zeropoint )

Returns scale and zeropoint of layers.

void

getTypes(
    const std::vector< MatType > & inputs,
    const int requiredOutputs,
    const int requiredInternals,
    std::vector< MatType > & outputs,
    std::vector< MatType > & internals )

Ptr< BackendNode >

initCann(
    const std::vector< Ptr< BackendWrapper > > & inputs,
    const std::vector< Ptr< BackendWrapper > > & outputs,
    const std::vector< Ptr< BackendNode > > & nodes )

Returns a CANN backend node.

Ptr< BackendNode >

initCUDA(
    void * context,
    const std::vector< Ptr< BackendWrapper > > & inputs,
    const std::vector< Ptr< BackendWrapper > > & outputs )

Returns a CUDA backend node.

Ptr< BackendNode >

initNgraph(
    const std::vector< Ptr< BackendWrapper > > & inputs,
    const std::vector< Ptr< BackendNode > > & nodes )

Ptr< BackendNode >

initTimVX(
    void * timVxInfo,
    const std::vector< Ptr< BackendWrapper > > & inputsWrapper,
    const std::vector< Ptr< BackendWrapper > > & outputsWrapper,
    bool isLast )

Returns a TimVX backend node.

Ptr< BackendNode >

initVkCom(
    const std::vector< Ptr< BackendWrapper > > & inputs,
    std::vector< Ptr< BackendWrapper > > & outputs )

Ptr< BackendNode >

initWebnn(
    const std::vector< Ptr< BackendWrapper > > & inputs,
    const std::vector< Ptr< BackendNode > > & nodes )

int

inputNameToIndex(String inputName)

Returns index of input blob into the input array.

bool

isDataShuffling()

int

outputNameToIndex(const String & outputName)

Returns index of output blob in output array.

void

run(
    const std::vector< Mat > & inputs,
    std::vector< Mat > & outputs,
    std::vector< Mat > & internals )

Allocates layer and computes output.

bool

setActivation(const Ptr< ActivationLayer > & layer)

Tries to attach to the layer the subsequent activation layer, i.e. do the layer fusion in a partial case.

void

setParamsFrom(const LayerParams & params)

Initializes only name, type and blobs fields.

std::vector< Ptr< Graph > > *

subgraphs()

bool

supportBackend(int backendId)

Ask layer if it support specific backend for doing computations.

bool

tryFuse(Ptr< Layer > & top)

Try to fuse current layer with a next one.

void

unsetAttached()

“Detaches” all the layers, attached to particular layer.

bool

updateMemoryShapes(const std::vector< MatShape > & inputs)

Public Member Functions inherited from cv::Algorithm

Return

Name

Description

Algorithm()

~Algorithm()

void

clear()

Clears the algorithm state.

bool

empty()

Returns true if the Algorithm is empty (e.g. in the very beginning or after unsuccessful read.

String

getDefaultName()

void

read(const FileNode & fn)

Reads algorithm parameters from a file storage.

void

save(const String & filename)

void

write(
    const Ptr< FileStorage > & fs,
    const String & name = String() )

void

write(FileStorage & fs)

Stores algorithm parameters in a file storage.

void

write(
    FileStorage & fs,
    const String & name )

Static Public Member Functions#

Static Public Member Functions inherited from cv::Algorithm

Return

Name

Description

static Ptr< _Tp >

load(
    const String & filename,
    const String & objname = String() )

Loads algorithm from the file.

static Ptr< _Tp >

loadFromString(
    const String & strModel,
    const String & objname = String() )

Loads algorithm from a String.

static Ptr< _Tp >

read(const FileNode & fn)

Reads algorithm from the file node.

Public Attributes#

Public Attributes inherited from cv::dnn::Layer

Return

Name

Description

std::vector< Mat >

blobs

List of learned parameters must be stored here to allow read them by using Net::getParam().

std::vector< Arg >

inputs

String

name

Name of the layer instance, can be used for logging or other internal purposes.

void *

netimpl

std::vector< Arg >

outputs

int

preferableTarget

prefer target for layer forwarding

String

type

Type name which was used for creating layer by layer factory.

Additional Inherited Members#

Protected Member Functions inherited from cv::Algorithm

Return

Name

Description

void

writeFormat(FileStorage & fs)

Detailed Description#

This function performs array summation based on the Einstein summation convention. The function allows for concise expressions of various mathematical operations using subscripts.

By default, the labels are placed in alphabetical order at the end of the output. For example: if c = einsum("i,j", a, b), then c[i,j] == a[i]*b[j]. However, if c = einsum("j,i", a, b), then c[i,j] = a[j]*b[i]. Alternatively, you can control the output order or prevent an axis from being summed/force an axis to be summed by providing indices for the output. For example: diag(a) -> einsum("ii->i", a) sum(a, axis=0) -> einsum("i...->", a) Subscripts at the beginning and end may be specified by putting an ellipsis “…” in the middle. For instance, the function einsum("i...i", a) takes the diagonal of the first and last dimensions of the operand, and einsum("ij...,jk...->ik...") performs the matrix product using the first two indices of each operand instead of the last two. When there is only one operand, no axes being summed, and no output parameter, this function returns a view into the operand instead of creating a copy.

Member Function Documentation#

create()#

static Ptr< EinsumLayer > cv::dnn::EinsumLayer::create(const LayerParams & params)

Source file#

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