tools/converter/source/onnx/onnx-operators-ml.proto (144 lines of code) (raw):

// // WARNING: This file is automatically generated! Please edit onnx.in.proto. // // Copyright (c) Facebook Inc. and Microsoft Corporation. // Licensed under the MIT license. syntax = "proto3"; package onnx; import "onnx-ml.proto"; // // This file contains the proto definitions for OperatorSetProto and // OperatorProto. OperatorSetProtos are used to describe a versioned // set of operators that can be used by a ModelProto. // // Like ModelProto, OperatorSetProto is defined as a top-level file/wire // format, however their usage is different. // // ModelProto files are used to describe executable graphs that can be // executed directly by a framework, runtime, or engine. // // OperatorSetProto files are used to describe a set of operators that are // available in a given environment. The file TBD.TBD is the OperatorSetProto // that describes the ONNX standard operators. // // Operator/function status. enum OperatorStatus { EXPERIMENTAL = 0; STABLE = 1; } message FunctionProto { // The name of the function, similar usage of op_type in OperatorProto. string name = 1; // The first version of a function set which contains this function. // When there's any breaking change for this function, the function set // contains the function needs to bump its version, and since_version of // the updated function will be changed to the updated function set version. int64 since_version = 2; // This field indicates whether the syntax, semantics, or presence // of this function is in an experimental or stable stage. Once an // function is published as STABLE, its syntax and semantics MUST NOT // change in subsequent versions of the operator set. // When a function is published as EXPERIMENTAL, the syntax and semantics // of the function MAY change across operator set versions. // Functions "become" stable by deprecating the experimental version and // introducing a new stable function with the same name. OperatorStatus status = 3; // The inputs and outputs of the function. repeated string input = 4; repeated string output = 5; // The attributes of the function. repeated string attribute= 6; // The nodes in the function. repeated NodeProto node = 7; // A human-readable documentation for this function. Markdown is allowed. string doc_string = 8; } // An OperatorProto represents the immutable specification of the signature // and semantics of an operator. // // Operators are declared as part of an OperatorSet, which also defines the // domain name for the set. // // Operators are uniquely identified by a three part identifier // (domain, op_type, since_version) // where // *domain* is the domain of an operator set that // contains this operator specification. // // *op_type* is the name of the operator as referenced by a // NodeProto.op_type // // *since_version* is the version of the operator set that // this operator was initially declared in. // message OperatorProto { // The name of the operator within a domain. // This field MUST be present in this version of the IR. string op_type = 1; // The version of the operator set that first introduced this // operator. This value MUST be the same value as the // opset_version of the operator set that first published this operator. // Subsequent versions of the operator set MUST NOT alter the signature // or semantics of the operator once published as STABLE. // This field MUST be present in this version of the IR. int64 since_version = 2; // This field indicates whether the syntax, semantics, or presence // of this operator is in an experimental or stable stage. Once an // operator is published as STABLE, it's syntax and semantics MUST NOT // change in subsequent versions of the operator set. // When an operator is published as EXPERIMENTAL, the syntax and semantics // of the operator MAY change across operator set versions. // Operators "become" stable by deprecating the experimental version and // introducing a new stable operator with the same op_type. OperatorStatus status = 3; // Eventually we will declare the signature of the operator here // A human-readable documentation for this operator. Markdown is allowed. string doc_string = 10; } // An OperatorSetProto represents an immutable set of immutable operator // specifications. // // The domain of the set (OperatorSetProto.domain) is a reverse-DNS name // that disambiguates operator sets defined by independent entities. // // The version of the set (opset_version) is a monotonically increasing // integer that indicates changes to the membership of the operator set. // // // Operator sets are uniquely identified by a two part identifier (domain, opset_version) // // Like ModelProto, OperatorSetProto is intended as a top-level file/wire format, // and thus has the standard format headers in addition to the operator set information. // message OperatorSetProto { // All OperatorSetProtos start with a distingushed byte sequence to disambiguate // protobuf files containing OperatorSets from other content. // This field MUST be "ONNXOPSET" // This field MUST be present in this version of the IR string magic = 1; // All OperatorSetProtos indicate the version of the IR syntax and semantics // they adhere to. It is always IR_VERSION. // This field MUST be present in this version of the IR int32 ir_version = 2; // The prerelease component of the SemVer of the IR. // This field MAY be absent in this version of the IR string ir_version_prerelease = 3; // The build metadata component of the SemVer of the IR. // This field MAY be absent in this version of the IR string ir_build_metadata = 7; // Domain name of the operator set, in reverse DNS form (e.g., com.acme.dnnops). string domain = 4; // The version of the set of operators. This is a simple int value // that is monotonically increasing as new versions of operator set // are published. All operators in this set MUST have version // numbers no greater than opset_version. int64 opset_version = 5; // A human-readable documentation for this set of operators. Markdown is allowed. string doc_string = 6; // The operators specified by this operator set. // The (name, version) MUST be unique across all OperatorProtos in operator repeated OperatorProto operator = 8; // The functions specified by this operator set. // The (name, version) MUST be unique across all OperatorProtos/FunctionProtos in operator/functions repeated FunctionProto functions = 9; }