pub struct ModelProto {
pub ir_version: i64,
pub opset_import: Vec<OperatorSetIdProto>,
pub producer_name: String,
pub producer_version: String,
pub domain: String,
pub model_version: i64,
pub doc_string: String,
pub graph: Option<GraphProto>,
pub metadata_props: Vec<StringStringEntryProto>,
pub training_info: Vec<TrainingInfoProto>,
pub functions: Vec<FunctionProto>,
}
Expand description
Models
ModelProto is a top-level file/container format for bundling a ML model and associating its computation graph with metadata.
The semantics of the model are described by the associated GraphProto.
Fields§
§ir_version: i64
The version of the IR this model targets. See Version enum above. This field MUST be present.
opset_import: Vec<OperatorSetIdProto>
The OperatorSets this model relies on. All ModelProtos MUST have at least one entry that specifies which version of the ONNX OperatorSet is being imported.
All nodes in the ModelProto’s graph will bind against the operator with the same-domain/same-op_type operator with the HIGHEST version in the referenced operator sets.
producer_name: String
The name of the framework or tool used to generate this model. This field SHOULD be present to indicate which implementation/tool/framework emitted the model.
producer_version: String
The version of the framework or tool used to generate this model. This field SHOULD be present to indicate which implementation/tool/framework emitted the model.
domain: String
Domain name of the model.
We use reverse domain names as name space indicators. For example:
com.facebook.fair
or com.microsoft.cognitiveservices
Together with model_version
and GraphProto.name, this forms the unique identity of
the graph.
model_version: i64
The version of the graph encoded. See Version enum below.
doc_string: String
A human-readable documentation for this model. Markdown is allowed.
graph: Option<GraphProto>
The parameterized graph that is evaluated to execute the model.
metadata_props: Vec<StringStringEntryProto>
Named metadata values; keys should be distinct.
training_info: Vec<TrainingInfoProto>
Training-specific information. Sequentially executing all stored
TrainingInfoProto.algorithm
s and assigning their outputs following
the corresponding TrainingInfoProto.update_binding
s is one training
iteration. Similarly, to initialize the model
(as if training hasn’t happened), the user should sequentially execute
all stored TrainingInfoProto.initialization
s and assigns their outputs
using TrainingInfoProto.initialization_binding
s.
If this field is empty, the training behavior of the model is undefined.
functions: Vec<FunctionProto>
A list of function protos local to the model.
Name of the function “FunctionProto.name” should be unique within the domain “FunctionProto.domain”. In case of any conflicts the behavior (whether the model local functions are given higher priority, or standard opserator sets are given higher priotity or this is treated as error) is defined by the runtimes.
The operator sets imported by FunctionProto should be compatible with the ones imported by ModelProto and other model local FunctionProtos. Example, if same operator set say ‘A’ is imported by a FunctionProto and ModelProto or by 2 FunctionProtos then versions for the operator set may be different but, the operator schema returned for op_type, domain, version combination for both the versions should be same for every node in the function body.
One FunctionProto can reference other FunctionProto in the model, however, recursive reference is not allowed.
Trait Implementations§
Source§impl Clone for ModelProto
impl Clone for ModelProto
Source§fn clone(&self) -> ModelProto
fn clone(&self) -> ModelProto
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for ModelProto
impl Debug for ModelProto
Source§impl Default for ModelProto
impl Default for ModelProto
Source§impl Framework<ModelProto, Graph<InferenceFact, Box<dyn InferenceOp>>> for Onnx
impl Framework<ModelProto, Graph<InferenceFact, Box<dyn InferenceOp>>> for Onnx
Source§fn model_for_path(&self, p: impl AsRef<Path>) -> TractResult<InferenceModel>
fn model_for_path(&self, p: impl AsRef<Path>) -> TractResult<InferenceModel>
Source§fn proto_model_for_path(&self, p: impl AsRef<Path>) -> TractResult<ModelProto>
fn proto_model_for_path(&self, p: impl AsRef<Path>) -> TractResult<ModelProto>
Source§fn proto_model_for_read(&self, r: &mut dyn Read) -> TractResult<ModelProto>
fn proto_model_for_read(&self, r: &mut dyn Read) -> TractResult<ModelProto>
Source§fn model_for_proto_model_with_model_template(
&self,
proto: &ModelProto,
template: InferenceModel,
) -> TractResult<InferenceModel>
fn model_for_proto_model_with_model_template( &self, proto: &ModelProto, template: InferenceModel, ) -> TractResult<InferenceModel>
Source§fn model_for_read(&self, r: &mut dyn Read) -> TractResult<InferenceModel>
fn model_for_read(&self, r: &mut dyn Read) -> TractResult<InferenceModel>
Source§fn model_for_proto_model(&self, proto: &ProtoModel) -> Result<Model, Error>
fn model_for_proto_model(&self, proto: &ProtoModel) -> Result<Model, Error>
Source§impl Message for ModelProto
impl Message for ModelProto
Source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Source§fn encode<B>(&self, buf: &mut B) -> Result<(), EncodeError>
fn encode<B>(&self, buf: &mut B) -> Result<(), EncodeError>
Source§fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn encode_length_delimited<B>(&self, buf: &mut B) -> Result<(), EncodeError>
fn encode_length_delimited<B>(&self, buf: &mut B) -> Result<(), EncodeError>
Source§fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn decode<B>(buf: B) -> Result<Self, DecodeError>
fn decode<B>(buf: B) -> Result<Self, DecodeError>
Source§fn decode_length_delimited<B>(buf: B) -> Result<Self, DecodeError>
fn decode_length_delimited<B>(buf: B) -> Result<Self, DecodeError>
Source§fn merge<B>(&mut self, buf: B) -> Result<(), DecodeError>
fn merge<B>(&mut self, buf: B) -> Result<(), DecodeError>
self
. Read moreSource§fn merge_length_delimited<B>(&mut self, buf: B) -> Result<(), DecodeError>
fn merge_length_delimited<B>(&mut self, buf: B) -> Result<(), DecodeError>
self
.Source§impl PartialEq for ModelProto
impl PartialEq for ModelProto
impl StructuralPartialEq for ModelProto
Auto Trait Implementations§
impl Freeze for ModelProto
impl RefUnwindSafe for ModelProto
impl Send for ModelProto
impl Sync for ModelProto
impl Unpin for ModelProto
impl UnwindSafe for ModelProto
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more