<?xml version="1.0" encoding="UTF-8"?>
<metanorma xmlns="https://www.metanorma.org/ns/standoc" type="semantic" version="3.5.0" schema-version="v2.2.0" flavor="generic">
<bibdata type="standard">
<title language="en" type="main">Open Neural Network Exchange (ONNX) — Part 1: Core</title>

<title language="en" type="part">Core</title>

<title language="en" type="title-part-prefix">Part 1</title>
<docidentifier primary="true" type="ONNX">ONNX 1-1 (unofficial draft)</docidentifier><docnumber>1</docnumber><date type="updated"><on>2026-09-20</on></date><contributor><role type="author"/><organization>
<name>ONNX Standardization Working Group</name>
<abbreviation>ONNX</abbreviation></organization></contributor><contributor><role type="author"><description>committee</description></role><organization>
<name>ONNX Standardization Working Group</name>
<subdivision type="Committee">
<name>ONNX Standardization Working Group</name>
</subdivision></organization></contributor><contributor><role type="publisher"/><organization>
<name>ONNX Standardization Working Group</name>
<abbreviation>ONNX</abbreviation></organization></contributor><edition>1</edition><version>2026-09-20</version><language>en</language><script>Latn</script><status><stage>preparatory</stage></status><copyright><from>2026</from><owner><organization>
<name>ONNX Standardization Working Group</name>
<abbreviation>ONNX</abbreviation></organization></owner></copyright><ext><doctype>standard</doctype><flavor>generic</flavor></ext></bibdata><metanorma-extension><semantic-metadata><stage-published>false</stage-published></semantic-metadata>
<presentation-metadata><toc-heading-levels>2</toc-heading-levels><html-toc-heading-levels>2</html-toc-heading-levels><doc-toc-heading-levels>2</doc-toc-heading-levels><pdf-toc-heading-levels>2</pdf-toc-heading-levels></presentation-metadata></metanorma-extension>
<preface><foreword id="_24393311-3366-b0cd-c2df-e7c50bc6acf4" obligation="informative">
<title id="_41c9fad3-d4c1-eecc-4fad-f91704acc026">Foreword</title>
<p id="_9706b36d-84b1-5428-296b-7abb126edc90">This document has been prepared by the ONNX Standardization Working Group.</p>

<p id="_0ae4ed81-31c6-edf8-7dd0-47406667e3c4">ONNX 1 consists of the following parts:</p>

<ul id="_93e63f47-20f5-73fe-1124-7d14d116dc04"><li><p id="_fcb6e0ee-2e87-6c30-31ef-c26e86dbf246">Part 1: Core (this document)</p>
</li>
<li><p id="_ec14ef74-50cf-558e-d9be-98bcadbcf996">Part 2: Operator sets</p>
</li>
<li><p id="_cfd56505-3521-71f9-1e83-07231ec2a522">Part 3: Conformance test package</p>
</li>
</ul>

<p id="_91057593-eab2-02f8-7336-ed1b896d1f54">The division is deliberate. The core changes with the IR version, roughly once a year; the operator sets change with every ONNX release. Keeping them in one document would give the core a new edition each time an operator is added.</p>

<admonition id="_ea85cf16-2a6e-2783-0aac-96cc5870e0d2" type="important">
<name id="_cb720aab-8e9b-cfec-6013-35be85ccb8d9">Status of this document</name>
<p id="_974fc9cd-e7ea-60aa-60fd-4b8a8cdf9d0d">This is an <strong>unofficial</strong> working draft. It has no standing within the ONNX project, the Linux Foundation, IEC, ISO or any other standards development organization, and it MUST NOT be cited as a normative reference.</p>

<p id="_4a2d57b1-c7c5-186b-a204-0fb1e425be27">It exists to demonstrate what a normative, Metanorma-authored ONNX specification would look like, as input to a discussion with the ONNX Steering Committee.</p>
</admonition></foreword><introduction id="_f407697f-3576-de6d-cb0f-03cedf17d5ad" obligation="informative">
<title id="_2b2e98d1-114a-3da4-8556-01ae0a724280">Introduction</title>
<p id="_a503d190-064e-04aa-dbc1-89bb73468e3e">The Open Neural Network Exchange (ONNX) format is in wide industrial use as an interchange representation for machine learning models. Its present specification is maintained as a set of Markdown documents alongside the reference implementation, which is well suited to rapid evolution but does not provide the properties expected of a standard: a stable identifier, an unambiguous separation of normative from informative text, testable conformance requirements, and a controlled change process.</p>

<p id="_99aa1fca-7066-cccd-7cf1-bf40b60173f5">This document restates the ONNX format as a normative specification. It is written in Metanorma so that it can be rendered in the house styles of successive publishers as ONNX moves along the intended path:</p>

<ol id="_c49cf404-5210-6b08-ab5b-6cf3d9f47871" type="arabic"><li><p id="_a3d550fb-bfa4-ed83-864c-d8fdd249f76b">a specification published under a Linux Foundation Joint Development Foundation (JDF) project, giving ONNX a specification process with an explicit IPR regime;</p>
</li>
<li><p id="_c3d6227a-1ed7-2ed2-a9a9-e831c55aaf65">subsequently, submission of that specification through a Publicly Available Specification (PAS) or equivalent route towards an ISO or ISO/IEC deliverable.</p>
</li>
</ol>

<p id="_0a9645b9-3cef-8902-1977-cc97dd1ee864">Accordingly this document follows ISO/IEC Directives, Part 2 drafting conventions from the outset, even though its current publisher is not an SDO.</p>

<p id="_db5b3bed-cbf3-8055-5d4b-2daf4cfa10c0">This part specifies the framework: what a model is, what its values may be, what evaluating it means, and what an implementation must do to conform. It names no individual operator. The operator definitions themselves are in Part 2, and the test vectors that make conformance checkable are in Part 3.</p>

<p id="_42e84b54-e288-9cec-4f32-87a839338ff6">The technical content is intended to describe ONNX as it is, not as it might be. Where the reference implementation and the present prose specification disagree, that divergence is recorded rather than silently resolved; see Annex C.</p>
</introduction></preface><sections>

<clause id="_297fc355-b9ce-57a1-561b-26639c422377" type="scope" obligation="normative">
<title id="_f70b6ff6-6131-0e24-81e1-850dbe94b63d">Scope</title>
<p id="_273434d8-083c-eb11-21e6-ea193ab0e9cf">This document specifies the core of the Open Neural Network Exchange (ONNX) format: the information model, the type system, the evaluation semantics, the rules for shape and type inference and for model validation, the binary encoding, the versioning scheme, and the conformance requirements.</p>

<p id="_ddd615d9-3aef-57f9-f946-d011ccb85288">This document specifies:</p>

<ul id="_827c8701-e618-ba3e-52e9-efa21047491e"><li><p id="_8e1c666f-9768-cdec-5b68-200e14476edf">the entities of an ONNX model and their relationships;</p>
</li>
<li><p id="_1d5dd879-7322-a511-4cbd-4315dde74eb5">the data types and shapes that values in a model may take;</p>
</li>
<li><p id="_7ccd5f53-d0e2-a69f-b447-ce6455043e73">the structure a graph must have to be well formed;</p>
</li>
<li><p id="_bc29b725-8798-5a17-453f-8f31f97fe4d0">the evaluation semantics of a graph;</p>
</li>
<li><p id="_46660d97-b4d1-7404-9f1a-4cb9b2aa21be">the obligations on shape and type inference;</p>
</li>
<li><p id="_8f1fba2a-2f79-b323-47c8-e4751c59c857">what a validating implementation must detect;</p>
</li>
<li><p id="_d0a792a6-452b-23a6-8f95-b3a227338cf3">the numerical behaviour an implementation must exhibit;</p>
</li>
<li><p id="_fb711711-bfd2-e7ed-9b22-c842802ce5b3">the binary serialization of a model and the handling of external data;</p>
</li>
<li><p id="_f349e0fe-1174-10a6-804e-9e046162cdee">the versioning and compatibility rules governing the version axes;</p>
</li>
<li><p id="_cfa25f37-0e8d-3005-9b34-b633487ded87">the security considerations and resource limits that apply to untrusted models;</p>
</li>
<li><p id="_f2eaf2a1-5360-2cbc-4a6f-b28783ed2114">the conformance classes and profiles that an implementation may claim.</p>
</li>
</ul>

<p id="_ed8f3358-3cbd-ad51-f68b-a1abfd88d1f6">This document does not specify:</p>

<ul id="_cb9783bd-c938-b495-beef-2837763208d8"><li><p id="_15ebc562-6948-8146-9527-999a6749300f">the definitions of individual operators, which are in <eref type="inline" bibitemid="onnx-part-2" citeas="ONNX 1-2"/>;</p>
</li>
<li><p id="_437ed995-4084-f092-2c01-5e472936bbee">the conformance test vectors, which are in <eref type="inline" bibitemid="onnx-part-3" citeas="ONNX 1-3"/>;</p>
</li>
<li><p id="_897cc625-5b3b-6eb1-e924-fbd7d3f26af1">the internal representation, scheduling or optimization strategy of a runtime;</p>
</li>
<li><p id="_38201c36-b1c4-b7ed-aa3f-e9eefc5fe03e">training procedures, optimizers or loss functions, except where they are expressed as operators within a graph;</p>
</li>
<li><p id="_4e392c2e-ee46-3fe7-a1f5-b5c41ab05146">hardware requirements, performance characteristics or resource limits beyond those stated in  <xref target="security" style="short"/>;</p>
</li>
<li><p id="_e9081da5-9f46-c023-2ecc-f7ff8f1d54a4">the ONNX reference implementation, its API or its source distribution; see Annex D for the correspondence.</p>
</li>
</ul>
</clause>



<terms id="_6b221c3f-bc05-0987-6993-90d5d39d03aa" obligation="normative">
<title id="_dfb2eab2-f980-6365-3c47-81d0eb272962">Terms and definitions</title><p id="_1fbc7bf1-a8de-c3eb-ee88-3b4cf950e61b">For the purposes of this document, the following terms and definitions apply.</p>
<term id="_3d01dcf8-2edc-abdd-9fab-b972632208d1" anchor="model"><preferred><expression>
<name>model</name>
</expression>
</preferred>
<definition id="_e30aac27-8834-2af2-b5ef-2722eafc68b7"><verbal-definition id="_f630946b-a77e-6239-a8bd-7c504df8a640"><p id="_9fcfa40e-3002-f2f7-6586-4c9325e1298c">self-contained description of a computation, comprising a top-level <xref target="graph" style="short"><display-text>graph</display-text></xref>, the  <xref target="operator-set" style="short"><display-text>operator set</display-text></xref> versions it depends upon, and producer and metadata information</p></verbal-definition></definition>
 </term>

<term id="_902649c3-0691-0a81-2bf9-152074e13e53" anchor="graph"><preferred><expression>
<name>graph</name>
</expression>
</preferred>
<definition id="_ae8350f9-9e95-6dd2-774f-ad703da54089"><verbal-definition id="_d90c0cd3-7b68-b45a-d7d0-eb02a819153e"><p id="_88336519-213e-e261-d709-1ed1968a188e">directed acyclic graph of <xref target="node" style="short"><display-text>nodes</display-text></xref> together with its declared inputs, outputs, initializers and value type information</p></verbal-definition></definition>
 </term>

<term id="_da2f185e-08a6-3807-9887-a2d4feef8c5b" anchor="node"><preferred><expression>
<name>node</name>
</expression>
</preferred>
<definition id="_c4b28e25-9ee5-9f3b-7379-8dab58b83f8a"><verbal-definition id="_57f3fe92-df64-45c6-f70f-8725b9857216"><p id="_99e32267-e71d-c27d-6914-28c7dba50046">single invocation of an <xref target="operator" style="short"><display-text>operator</display-text></xref>, binding named values to the operator’s formal inputs and outputs and fixing its  <xref target="attribute" style="short"><display-text>attributes</display-text></xref></p></verbal-definition></definition>
 </term>

<term id="_fa022dfd-568a-89d5-8812-9c75974f1052" anchor="initializer"><preferred><expression>
<name>initializer</name>
</expression>
</preferred>
<definition id="_328bd63f-4553-ffb4-e169-b180a0636f29"><verbal-definition id="_e3210678-e7e0-b037-4154-512ed98c0c84"><p id="_38c1e7d9-dff7-8d6f-2837-4c2429adea13">named tensor value carried in a <xref target="graph" style="short"><display-text>graph</display-text></xref>, being either a constant of that graph or the default value of an input of it</p></verbal-definition></definition>
 </term>

<term id="_36fe2818-ba80-7627-abed-5a826c7e1c5d" anchor="subgraph"><preferred><expression>
<name>subgraph</name>
</expression>
</preferred>
<definition id="_ab4e38ad-c72a-c84a-2cec-da7a9ef78bee"><verbal-definition id="_d960c215-6a3c-69de-c669-91ab92129ee1"><p id="_df6bd8cd-f231-b79a-dfb1-4bef8bf50057"><xref target="graph" style="short"><display-text>graph</display-text></xref> that is the value of an <xref target="attribute" style="short"><display-text>attribute</display-text></xref> of a <xref target="node" style="short"><display-text>node</display-text></xref></p></verbal-definition></definition>
 </term>

<term id="_ea1b3bf4-66af-de2b-acbd-78cb6b3317fe" anchor="function"><preferred><expression>
<name>function</name>
</expression>
</preferred>
<definition id="_cedfab24-0714-6960-18f9-e4a8cee62129"><verbal-definition id="_a7b6579c-f3a8-278c-fa6e-45fe41d1ad4f"><p id="_d451a54d-92c7-21bd-dd2f-bb213fe818e5"><xref target="operator" style="short"><display-text>operator</display-text></xref> together with an implementation of it in terms of other operators</p><p id="_c495d593-9b74-d15a-54d6-c3072cd40370">Note 1 to entry: The implementation is a fallback, not a definition of the operator’s numerical behaviour; see  <xref target="functions" style="short"/>.</p></verbal-definition></definition>


 </term>

<term id="_93505e6c-40cd-4316-ad12-934779357fe8" anchor="dimension-variable"><preferred><expression>
<name>dimension variable</name>
</expression>
</preferred>
<definition id="_f19bf5c4-2f92-358d-5d3f-a93bfd22a0fe"><verbal-definition id="_9a0c36c9-c305-2786-a975-a7ab4e3c9d84"><p id="_be70d656-cfbb-cc7f-c8fb-f04d7a87c85b">name denoting an extent that is not fixed when a <xref target="model" style="short"><display-text>model</display-text></xref> is written, and that is the same wherever the name occurs in that model</p></verbal-definition></definition>
 </term>

<term id="_54f9d67e-abdb-e260-3d48-87597adf5c75" anchor="operator"><preferred><expression>
<name>operator</name>
</expression>
</preferred>
<definition id="_31c4615d-837e-2e6f-ed11-694b08f4f748"><verbal-definition id="_2dc99b08-523a-e9e1-4554-3cfcbb29f1cb"><p id="_08a49a1f-824b-74cc-15a8-713fab39246b">named computation with a specified signature and semantics, identified by the pair of its  <xref target="domain" style="short"><display-text>domain</display-text></xref> and its name</p><p id="_c4a54867-1486-aef3-e1dc-826dd70d50c5">Note 1 to entry: Operators are defined in <eref type="inline" bibitemid="onnx-part-2" citeas="ONNX 1-2"/>. This document specifies the form such a definition takes and the rules it obeys, not the operators themselves.</p></verbal-definition></definition>


 </term>

<term id="_1b9dd080-38d7-6136-7282-86f38008e957" anchor="domain"><preferred><expression>
<name>domain</name>
</expression>
</preferred>
<definition id="_11007f4d-bca3-4b6c-e531-c8fd21e512e4"><verbal-definition id="_92392e83-5dbf-a7ed-98dd-a4564af28dba"><p id="_bbe57bda-1b03-fc58-62d3-8800136cbad0">namespace that disambiguates operator names</p><p id="_bd22670e-3973-721f-07ce-074886085a58">Note 1 to entry: The empty string denotes the default ONNX domain.</p></verbal-definition></definition>


 </term>

<term id="_240b68d1-10ac-f6d7-9ec5-4642674461af" anchor="operator-set"><preferred><expression>
<name>operator set</name>
</expression>
</preferred>
<definition id="_a7810513-10f7-c2c7-ac92-562fa226a641"><verbal-definition id="_13c03a9e-8d86-1622-3a02-4fcf958b0564"><p id="_38b0688f-69c3-279e-0953-e695de2d6c66">opset</p><p id="_3bab0993-13ea-6af2-8c9a-76e43db57ff9">set of operator definitions belonging to one <xref target="domain" style="short"><display-text>domain</display-text></xref>, identified by that domain and a monotonically increasing integer version</p></verbal-definition></definition>


 </term>

<term id="_c17594af-d51a-0735-9d05-65bb8c290570" anchor="attribute"><preferred><expression>
<name>attribute</name>
</expression>
</preferred>
<definition id="_dc2451d1-2e57-93fb-d783-2c7357783e69"><verbal-definition id="_dec08c72-e936-fd67-f108-869c037e63ee"><p id="_28a6a47c-4696-d3f3-641f-4a4ae4561bd1">named value that is fixed at the time the <xref target="model" style="short"><display-text>model</display-text></xref> is constructed and that does not participate in dataflow</p></verbal-definition></definition>
 </term>

<term id="_321f43ea-19c7-4bf6-3234-03e5e0b830c4" anchor="tensor"><preferred><expression>
<name>tensor</name>
</expression>
</preferred>
<definition id="_eede3db7-0ca4-85d2-0f61-d812e5650014"><verbal-definition id="_f0fbce00-258f-b3a8-b9b0-ef54c566f14e"><p id="_b3855db0-2a98-c84b-586b-66329a4ef2b9">dense multidimensional array of elements of a single <xref target="element-type" style="short"><display-text>element type</display-text></xref>, having a <xref target="shape" style="short"><display-text>shape</display-text></xref></p></verbal-definition></definition>
 </term>

<term id="_5be0a3f1-ff11-e9c1-4f2e-567635e92199" anchor="element-type"><preferred><expression>
<name>element type</name>
</expression>
</preferred>
<definition id="_ac93f61e-2a9a-f098-4a93-cb7db922dc0d"><verbal-definition id="_46a3dbb3-6f08-e309-b8f6-41b277ea7591"><p id="_db52e3e4-28c5-abbd-8031-95704a656716">member of the enumeration of scalar types that the elements of a <xref target="tensor" style="short"><display-text>tensor</display-text></xref> may take</p></verbal-definition></definition>
 </term>

<term id="_ece34799-464f-abfb-9e7b-7213e8f7df38" anchor="shape"><preferred><expression>
<name>shape</name>
</expression>
</preferred>
<definition id="_bbe0a264-d73d-b7a6-2d1f-3b083bd908c7"><verbal-definition id="_7c20596c-34b0-d452-48e6-c83d34db88a5"><p id="_106f29d2-787c-cfd7-6928-6cad8121a68e">ordered sequence of dimensions of a <xref target="tensor" style="short"><display-text>tensor</display-text></xref>, each of which is a non-negative integer, a symbolic name, or unknown</p></verbal-definition></definition>
 </term>

<term id="_6fe9a4ca-7221-f4df-9771-44b486a5d8a6" anchor="conforming-implementation"><preferred><expression>
<name>conforming implementation</name>
</expression>
</preferred>
<definition id="_a1d98bc7-96e8-6071-3dd1-01ebce4828cd"><verbal-definition id="_3b3d18c0-6e37-3672-ee32-a4627b503bcf"><p id="_ffd01e67-b85f-5f6f-2b07-aac629d74966">implementation that satisfies all requirements of one or more of the conformance classes defined in  <xref target="conformance" style="short"/></p></verbal-definition></definition>
 </term>

<term id="_f59bd838-fbb6-e513-fd76-96da72a99bdd" anchor="producer"><preferred><expression>
<name>producer</name>
</expression>
</preferred>
<definition id="_fd4c76d1-af97-b2cc-1e20-1443e52b1bc6"><verbal-definition id="_2a381dfb-4376-c354-a34f-8e262a5fa35b"><p id="_7a1cb236-fe59-06d1-6123-13b0afc3100b">program that emits a <xref target="model" style="short"><display-text>model</display-text></xref></p></verbal-definition></definition>
 </term>

<term id="_40a4a317-ea51-88e8-4567-0b9dcda1bc26" anchor="consumer"><preferred><expression>
<name>consumer</name>
</expression>
</preferred>
<definition id="_4fc9a9bf-22d7-1225-f344-42731f6ed4b7"><verbal-definition id="_63fab3f2-5ebf-163a-bcc1-92126f536391"><p id="_cf0bd800-42b2-4086-9f9c-210e8e158cfe">program that reads a <xref target="model" style="short"><display-text>model</display-text></xref> in order to evaluate, transform or inspect it</p></verbal-definition></definition>
 </term>

<term id="_8c4ee514-d908-9982-38cc-bcfaeaa5801b" anchor="validation"><preferred><expression>
<name>validation</name>
</expression>
</preferred>
<definition id="_1344bda2-c063-c4fd-943a-9160d3617634"><verbal-definition id="_eb1100b9-959d-a029-fa41-7db9653ed7f5"><p id="_e6bd9de2-f6f0-2458-fd54-cbc3bfb76233">determination of whether a <xref target="model" style="short"><display-text>model</display-text></xref> satisfies the requirements of this document, without evaluating it</p></verbal-definition></definition>
 </term>

<term id="_27b5b6b2-013f-e740-77be-58ce2e53811c" anchor="conformance-profile"><preferred><expression>
<name>conformance profile</name>
</expression>
</preferred>
<definition id="_8b60d43d-8aac-767e-8648-8773aced7137"><verbal-definition id="_a4bf34eb-3269-6f38-2362-89e0d796e7b8"><p id="_cd482be5-c988-9c77-0c26-dda25a0b7cfb">named set of requirements, narrower than a conformance class, that an implementation may claim</p></verbal-definition></definition>
 </term>

<term id="_c422da8c-3485-5c9a-075a-aa9dea881326" anchor="test-vector"><preferred><expression>
<name>test vector</name>
</expression>
</preferred>
<definition id="_7de20315-aa8d-1420-2a76-d7d40eea25ae"><verbal-definition id="_3203a085-16ac-0e59-9766-4cf8ccae1710"><p id="_8fb1233f-7849-a324-afd3-e21ec1f133a6">model, together with input values and expected output values, published in <eref type="inline" bibitemid="onnx-part-3" citeas="ONNX 1-3"/> for the purpose of checking conformance</p></verbal-definition></definition>
 </term>
</terms>

<clause id="_60099938-fa3b-82fa-a2c0-44f064df2320" anchor="conformance" obligation="normative">
<title id="_e246d3c1-cf3f-232c-cb69-d9b3793ef60f">Conformance</title>
<clause id="_6124872b-d92c-7be6-32f2-74373bc6b433" obligation="normative">
<title id="_336bc9ef-fecd-99e3-a894-1bbe05b60da0">Requirement terminology</title>
<p id="_d1a16e55-e64a-5025-b515-309252315d80">In this document, the key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY” and “OPTIONAL” are to be interpreted as described in  <eref type="inline" bibitemid="rfc2119" citeas="IETF RFC 2119"/>.</p>

<admonition id="_2b494c52-33f4-0d98-df58-fddccd431796" type="important">
<name id="_c786813d-f3b2-cb4c-adaf-1c24905703c7">Editorial note</name>
<p id="_dbf1f5ef-4504-dac4-4cde-f0b0607d5370">ISO/IEC Directives Part 2 uses “shall/should/may/can” and disallows RFC 2119 capitalisation. Retain RFC 2119 for the JDF stage; convert to Directives Part 2 verbal forms before any ISO submission. Tracked as an editorial migration task, not a technical one.</p>
</admonition></clause>

<clause id="_b393a92b-99ca-3e65-8677-07a026f89e73" obligation="normative">
<title id="_b1d84a15-edd4-b926-1cfb-fa026e8aba9a">Conformance classes</title>
<p id="_3f62feab-9895-2e9c-2091-4670ca6ffb5d">This document defines the conformance classes listed in <xref target="tbl-conformance-classes" style="short"/>. An implementation claiming conformance to this document SHALL state which classes it claims and, for each class it claims, the <xref target="operator-set" style="short"><display-text>operator set</display-text></xref> versions it supports.</p>

<table id="_13b0384b-9c86-68b8-c7f5-467cb68e9a48" anchor="tbl-conformance-classes">
<name id="_1850ecf0-9f16-47fa-5bfc-6d89a6512ee3">Conformance classes</name>
<thead><tr id="_40b32388-f269-daa3-7a6e-ddcdb831bcfd"><th id="_b7ba9da8-4b3e-c9c7-1ff9-87f692c8defb" valign="top" align="left">Class</th>
<th id="_9f5c8978-ba5f-b7fe-781b-a503dfdc13df" valign="top" align="left">Applies to</th>
<th id="_53c9d993-b36c-ef6b-e2eb-bb9de15f96d4" valign="top" align="left">Summary of obligations</th>
</tr></thead>
<tbody><tr id="_0c494527-efa1-a6f8-e251-70ab4a9dced1"><td id="_ba808e24-d261-3711-0a78-32cc82159f6b" valign="top" align="left">Producer</td>
<td id="_630f057c-1171-d2f5-8e68-e17cf287f7c1" valign="top" align="left">A program that writes ONNX models</td>
<td id="_dcd525c5-01c3-14b1-bb14-59d9aaf0726e" valign="top" align="left">Emits only models that satisfy <xref target="serialization" style="short"/>, <xref target="information-model" style="short"/> and    <xref target="graph-structure" style="short"/>.</td>
</tr><tr id="_4b24b425-87ea-cf47-8c90-3a6aeae7dd39"><td id="_4aedbc8e-4c70-c6f1-2b40-50c33f880bc5" valign="top" align="left">Validating consumer</td>
<td id="_d9948b87-34c3-546e-63ce-0446d3604601" valign="top" align="left">A program that validates ONNX models</td>
<td id="_0d6507ba-f595-43df-cfdb-e98b8052f688" valign="top" align="left">Detects and reports every condition classified as an error in    <xref target="validation-clause" style="short"/>.</td>
</tr><tr id="_a10a09e1-e76f-c1bf-db73-67ff75081760"><td id="_1e18d289-ed99-8f3c-bf9a-eeb4a7d40c0b" valign="top" align="left">Evaluating consumer</td>
<td id="_debf0b4f-6eec-ab2f-5a67-03e23d49824f" valign="top" align="left">A runtime that executes ONNX models</td>
<td id="_76055102-4d8a-df91-6547-665c203f769d" valign="top" align="left">Computes results within the tolerances of <xref target="numerical" style="short"/> for every operator in   the operator sets it claims.</td>
</tr></tbody>
</table>
</clause>

<clause id="_7ff51145-f05f-6d12-2cb9-e45ab2f51637" obligation="normative">
<title id="_72fe555a-984f-0f45-0b34-18f34d93bd40">Conformance profiles</title>
<p id="_d7513309-0499-549c-a33a-d1a87e370e43">A conformance profile names a subset of the requirements of this document and of  <eref type="inline" bibitemid="onnx-part-2" citeas="ONNX 1-2"/> that an implementation may claim in place of full support.</p>

<admonition id="_de1d4ce1-bc50-de1b-c6b9-95e629c075ec" type="important">
<name id="_bd2020c7-6f42-525b-3adc-4b7573dd632c">Editorial note</name>
<p id="_2084e350-a714-bc6e-be7f-0ba23fc04eeb">The profiles themselves are not yet defined. Candidates raised so far are a core inference profile excluding training and control flow, a profile restricted to statically shaped models, and a profile for the  <tt>ai.onnx.ml</tt> domain. Profiles must be defined together with the test selection rules in <eref type="inline" bibitemid="onnx-part-3" citeas="ONNX 1-3"/>, since a profile that no test package can check is not a conformance claim. To be settled with the Steering Committee.</p>
</admonition></clause>

<clause id="_0affc76d-e2c3-3feb-ff71-ae5e56ee0836" obligation="normative">
<title id="_52bd99de-e5c0-6753-b300-1a1ba5e23b43">Operator set coverage</title>
<p id="_5b569c47-3163-b6a2-7248-c240eb791041">A <xref target="conforming-implementation" style="short"><display-text>conforming implementation</display-text></xref> is not required to support every operator defined in an operator set. It SHALL, however, report unambiguously which operators it does not support, and it SHALL NOT silently substitute an approximation of an unsupported operator.</p>
</clause>

<clause id="_bd8edb93-bc70-764b-8025-584401a6a533" obligation="normative">
<title id="_9379c097-b85e-1d0d-b420-f43067346d5f">Conformance statement</title>
<p id="_cfe88afc-92c1-5df4-c772-397a45c272f6">An implementation claiming conformance SHALL publish a conformance statement containing the information required by Annex A.</p>
</clause>

<clause id="_5a1b993e-3df2-b843-5d7e-139fe7ed628c" obligation="normative">
<title id="_5ac862f1-32de-2f21-3d72-8d263cded217">Relationship to Parts 2 and 3</title>
<p id="_112c36b8-3e5c-401d-0a55-adbe8f93793d">This document specifies the form an operator definition takes and the rules an <xref target="operator-set" style="short"><display-text>operator set</display-text></xref> obeys; it defines no operator. Operator definitions are in <eref type="inline" bibitemid="onnx-part-2" citeas="ONNX 1-2"/>.</p>

<p id="_a97b9077-bf8c-5ac5-b3bd-b0dd2cd45948">A claim of conformance to this document alone is a claim about structure, encoding and validation. A claim about evaluation is necessarily also a claim against one or more operator sets of  <eref type="inline" bibitemid="onnx-part-2" citeas="ONNX 1-2"/>, checked with the test vectors of  <eref type="inline" bibitemid="onnx-part-3" citeas="ONNX 1-3"/>.</p>
</clause>
</clause>

<clause id="_9cad193e-b2e6-04ab-f29b-0700e86656d4" anchor="information-model" obligation="normative">
<title id="_6ebb1263-9db9-edad-9975-812a85164490">Information model</title>
<clause id="_ad2c2fc6-b733-bf58-07dc-76d887047fe6" obligation="normative">
<title id="_0175f76d-716b-304d-d5e0-55b2c2c71130">General</title>
<p id="_3d5ecca4-46df-d4d5-e390-c0c5b64cee73">This clause introduces the entities of an ONNX <xref target="model" style="short"><display-text>model</display-text></xref> and their relationships.  <xref target="graph-structure" style="short"/> states the constraints a well-formed graph satisfies;  <xref target="graph-semantics" style="short"/> states what evaluating one means.</p>
</clause>

<clause id="_1aad30b5-94f1-15e6-ae8b-757b6486230f" obligation="normative">
<title id="_f7ab8a4c-50fe-2c60-806f-b1781fd4daab">Entities and their relationships</title>
<p id="_564584a2-3317-e892-44d3-acc615446262">A model contains exactly one top-level <xref target="graph" style="short"><display-text>graph</display-text></xref>.</p>

<p id="_907f71bf-5670-5433-a247-9bd9902dfd4d">A graph contains an ordered sequence of <xref target="node" style="short"><display-text>nodes</display-text></xref>, together with its declared inputs, outputs, initializers and value type information.</p>

<p id="_f38b38dc-fe3f-5013-88f7-0a0c761c1712">A node invokes one <xref target="operator" style="short"><display-text>operator</display-text></xref>, identified by <xref target="domain" style="short"><display-text>domain</display-text></xref> and name, binds named values to that operator’s formal inputs and outputs, and fixes its <xref target="attribute" style="short"><display-text>attributes</display-text></xref>.</p>

<p id="_9f480d70-2a6f-29ca-68e5-052d28b7ca3a">A value is produced by exactly one of: a graph input, an initializer, a node in the same graph, or an enclosing scope.</p>
</clause>

<clause id="_1fddab70-5b88-fb96-22c0-b93aceff637c" anchor="model-clause" obligation="normative">
<title id="_613abcf5-602e-0069-5ce2-91600f91e738">Model</title>
<clause id="_9cf04113-0b79-3b88-a202-f2355dda5d56" obligation="normative">
<title id="_9a99f3ea-c7e5-16a9-1f63-b07e1f9acf07">Contents</title>
<p id="_0caab1eb-19e0-5ebd-a7a2-be97a928dff5"><xref target="tbl-model" style="short"/> states the contents of a model and the obligation on each.</p>

<table id="_5d2ddac1-baf6-74ae-a2af-6ec1b34768b7" anchor="tbl-model"><colgroup><col width="28.5714%"/><col width="14.2857%"/><col width="57.1429%"/></colgroup>
<name id="_9c72ee1a-7366-3f54-53dc-58ada864e442">Contents of a model</name>
<thead><tr id="_cebd46c5-a555-9b3d-846b-fac0019e13f4"><th id="_f4dae04e-d91f-5a61-cf62-c206b4ce217e" valign="top" align="left">Item</th>
<th id="_6a7758b9-a54d-86f7-6b26-304f48d6c9b4" valign="top" align="left">Obligation</th>
<th id="_a5ba5991-16e0-6ccf-60be-4b0adc48d40a" valign="top" align="left">Description</th>
</tr></thead>
<tbody><tr id="_d9d75173-815a-a86c-e5d8-ebe5d1566c65"><td id="_9f58bb97-7991-b983-13db-1d90b109f9b7" valign="top" align="left">IR version</td>
<td id="_eed4a73b-3f2e-f7f6-3c9f-b663bcf7144a" valign="top" align="left">mandatory</td>
<td id="_2ee21332-3120-a719-8ab7-6859f429f6ac" valign="top" align="left">The version of this document against which the model was produced; see    <xref target="versioning" style="short"/>.</td>
</tr><tr id="_2cbc3433-4dee-9588-d6c8-3305268b1f28"><td id="_e208b607-8e51-be05-81c2-179368e77139" valign="top" align="left">Operator set imports</td>
<td id="_3309cfe2-5b65-d788-8245-53a5309db983" valign="top" align="left">mandatory</td>
<td id="_622f028d-d7ae-bb87-30a6-ca35bb2e1670" valign="top" align="left">The <xref target="operator-set" style="short"><display-text>operator sets</display-text></xref> the model requires; see    <xref target="operator-set-import" style="short"/>.</td>
</tr><tr id="_49b30e53-95c1-83d2-0836-ffb7f6c7566d"><td id="_f456271c-7da6-d67a-b536-3eb5b30d1974" valign="top" align="left">Graph</td>
<td id="_8af09b8c-c622-74a8-9f0d-a60a842f953d" valign="top" align="left">mandatory</td>
<td id="_716a0cf4-9bb9-5db1-b465-0a8c6dc526ef" valign="top" align="left">The top-level graph, evaluated to execute the model.</td>
</tr><tr id="_fb753c95-244a-e29d-1567-01d25d245917"><td id="_5d501551-c237-2ada-9e5a-f17de61f88e3" valign="top" align="left">Functions</td>
<td id="_8ad10dd4-d0a7-3a6d-a4e0-ea6c5d0ad367" valign="top" align="left">optional</td>
<td id="_f501378b-b3ee-33cb-0c6f-0539eef6fb1f" valign="top" align="left">Functions local to the model; see <xref target="functions" style="short"/>.</td>
</tr><tr id="_13565f5c-1fc5-4eb8-a044-bb1336d8817c"><td id="_524bfce7-1a90-f212-48a8-17fc356365d0" valign="top" align="left">Producer name and version</td>
<td id="_617339ff-21cd-d88c-0d19-b23626d86c4f" valign="top" align="left">optional</td>
<td id="_58e66e78-6352-f7f7-48ca-22cfe3822d6b" valign="top" align="left">The tool that produced the model, for diagnostic purposes only.</td>
</tr><tr id="_0a52e8a3-1832-c644-826a-14982d1b5bc4"><td id="_16a4905d-1964-8bc3-7dcc-f568fd46f89f" valign="top" align="left">Model domain</td>
<td id="_0d6e949b-71fa-fdf4-fbe9-4d5dd326db97" valign="top" align="left">optional</td>
<td id="_49c12896-0e88-702d-bb2a-94aa95b6cd68" valign="top" align="left">A namespace for the model itself, distinct from an operator domain.</td>
</tr><tr id="_4c5bfed1-c21b-d60f-1091-bc5652ae8568"><td id="_8a8a90db-32e9-d96f-3316-c3cc14ad228f" valign="top" align="left">Model version</td>
<td id="_0a3c3bd6-1e05-015f-57ff-390dbdc8bfcb" valign="top" align="left">optional</td>
<td id="_2fcdff6a-d2be-f5bd-1f57-8cb72625403f" valign="top" align="left">An identifier assigned by the <xref target="producer" style="short"><display-text>producer</display-text></xref>, opaque to this document.</td>
</tr><tr id="_991f4d6d-ccc9-6adc-d4e1-2e4f58981751"><td id="_9df42fda-5903-1f42-7bcf-c09f7e5b2780" valign="top" align="left">Documentation string</td>
<td id="_e9a6c047-8e8c-3079-273c-7f388161dbf8" valign="top" align="left">optional</td>
<td id="_578e11e1-d495-e6ec-ab9a-dae807ad7acc" valign="top" align="left">Human-readable documentation.</td>
</tr><tr id="_fd887baa-ad78-a32b-3b38-646299ebf4b1"><td id="_6befa2bb-016c-87d3-8238-b1e6168cddee" valign="top" align="left">Metadata properties</td>
<td id="_84c72ba4-af79-6d5f-9177-62321db3f493" valign="top" align="left">optional</td>
<td id="_3208f4e4-a51a-04a6-cc4f-e8ed28d49fb6" valign="top" align="left">Named metadata values; see <xref target="metadata" style="short"/>.</td>
</tr></tbody>
</table>

<p id="_a64a0bc1-1463-b547-d678-ba0df4ae0674">A model domain SHOULD be a reverse domain name based on the identity of the organization responsible for the model.</p>
</clause>

<clause id="_00df7011-ee4b-2d9d-8cb8-90b8d4c77b22" anchor="operator-set-import" obligation="normative">
<title id="_d20ce462-97ab-8f88-448a-6082778e8157">Operator set imports</title>
<p id="_363d9416-4bee-b0be-f91a-63398ee04553">An <xref target="operator-set" style="short"><display-text>operator set</display-text></xref> is identified by a pair of a <xref target="domain" style="short"><display-text>domain</display-text></xref> and a version. The version is a positive integer that increases monotonically as versions of that operator set are published.</p>

<p id="_be8c8b22-edf6-e4ff-ee06-a5a0e47f254c">A model SHALL declare, for every <xref target="domain" style="short"><display-text>domain</display-text></xref> used by any node reachable from its top-level graph, the operator set version of that domain that the model requires. The default domain is denoted by the empty domain name and is imported implicitly.</p>

<p id="_be759390-60f0-6da5-63b9-6afae15ef29a">A domain other than the default domain SHALL be named, and SHOULD be named by a reverse domain name based on the identity of the organization responsible for it.</p>

<p id="_abdddeab-3e31-4e61-3f05-38ddd9a2eee1">Every operator invoked by a node SHALL be declared by one of the operator sets the model imports. A  <xref target="consumer" style="short"><display-text>consumer</display-text></xref> that does not implement every operator of every imported operator set SHALL reject the model; see  <xref target="conformance" style="short"/>.</p>
</clause>
</clause>

<clause id="_3774f036-481c-db89-428a-542e71807704" anchor="names-and-scoping" obligation="normative">
<title id="_a0f2bd5e-924e-a74f-509f-b748fcd47b9b">Names and scoping</title>
<clause id="_cad90fdd-5dca-7366-5dec-590bfa22b2ae" obligation="normative">
<title id="_5615bb8e-3a54-537c-8c56-eb697a17a5e2">Namespaces</title>
<p id="_eba1a4ca-fd04-714a-2418-144f05867135">Names are organized into the namespaces of <xref target="tbl-namespaces" style="short"/>. Within a namespace, a name SHALL be unique within a given graph.</p>

<table id="_d1c472b9-b374-8fe8-e147-13a5c0066193" anchor="tbl-namespaces"><colgroup><col width="20%"/><col width="80%"/></colgroup>
<name id="_6b96d390-6317-0036-cbe7-1b4bba5bb789">Namespaces</name>
<thead><tr id="_ab25a6db-d8e4-cb2f-febb-54cbde4e3338"><th id="_0cd7548d-3511-3a53-1b02-ecc56159b5f0" valign="top" align="left">Namespace</th>
<th id="_65521373-3aca-4d85-0b48-0145654676f2" valign="top" align="left">Names in it</th>
</tr></thead>
<tbody><tr id="_633e70e4-f3f8-775d-7f4d-571244cdc8e8"><td id="_b1ef1a71-e725-0757-cffb-60e1215eb7b0" valign="top" align="left">Attribute</td>
<td id="_2a61cb04-3df8-8c5e-9d61-b535eecc8473" valign="top" align="left">the attributes of one operator</td>
</tr><tr id="_f9550c53-10bf-9050-8437-983aae864bd9"><td id="_d7a014b3-fc86-cd43-d7d6-8050a6752895" valign="top" align="left">Value</td>
<td id="_424a5d30-aabe-2f4e-c0f2-2ab7d0371448" valign="top" align="left">node inputs and outputs, graph inputs and outputs, initializers</td>
</tr><tr id="_09280402-6fb9-2339-95f7-583cc0879127"><td id="_ff4dbcfb-7f59-1bc2-8960-a35c93c56494" valign="top" align="left">Node</td>
<td id="_b8bd9f4e-990c-70d3-ba2c-d6767ae1051d" valign="top" align="left">the nodes of a graph</td>
</tr><tr id="_40c66e99-fc17-4533-7760-11aa7c82a5e2"><td id="_4c875583-3df8-2209-987a-d0169b924aad" valign="top" align="left">Graph</td>
<td id="_64da38a3-eda2-acf4-8106-3f3afbd1ac97" valign="top" align="left">the graphs of a model domain</td>
</tr><tr id="_5814b3db-b778-0351-14af-8d6f3d98235c"><td id="_cc4c3dbd-aaa8-0ff0-2b3e-cfea77e17055" valign="top" align="left">Operator</td>
<td id="_80874a3e-e65c-91b7-0d28-ba2ccce0ebca" valign="top" align="left">the operators of a domain</td>
</tr><tr id="_f4471b82-95e6-7f52-88e2-6acebe92bb31"><td id="_9197c63c-8576-08d2-e997-49bde5649817" valign="top" align="left">Shape</td>
<td id="_3417bd17-58ed-366c-1064-0c8ccc7dcb32" valign="top" align="left">the dimension variables of a model; see <xref target="dimension-variables" style="short"/></td>
</tr></tbody>
</table>

<p id="_07c58922-5051-dc86-2c6b-c38ffddb0b8d">A name SHALL NOT be empty, except where an empty name is used to leave an operator input or output unsupplied; see  <xref target="optional-io" style="short"/>.</p>

<p id="_ec763965-f8d6-aab9-9c6f-2a709693731d">A name SHOULD adhere to the identifier syntax of <eref type="inline" bibitemid="iso9899" citeas="ISO/IEC 9899"/>.</p>
</clause>

<clause id="_44b2d87f-2159-3877-4917-991176bcd3b1" anchor="definitions-and-uses" obligation="normative">
<title id="_012651fb-a182-5481-7b7c-1e9bbf73aad2">Definitions and uses</title>
<p id="_da69769b-d923-dd2f-6ba4-227f583dde67">An occurrence of a name of the Value namespace as a graph input, as an initializer or as a node output is a definition. An occurrence as a node input or as a graph output is a use.</p>

<p id="_ce0b5e95-c27e-2d71-5554-b9102e282003">A name used in a graph SHALL have exactly one definition, save that the same name MAY be defined both as a graph input and as an initializer; see <xref target="initializers" style="short"/>.</p>
</clause>

<clause id="_02ab7d45-9046-a860-329a-ed4a178e09fd" anchor="subgraph-visibility" obligation="normative">
<title id="_6a46fc95-6c7e-e61c-fb96-933603252de4">Visibility in subgraphs</title>
<p id="_028ee876-35cc-33cf-a00d-e3ad2d8043af">A subgraph is a graph appearing as the value of an attribute of a node.</p>

<p id="_50030026-b763-63a6-8e75-eb0e40ba467b">A node input in a subgraph MAY use a name defined in an enclosing graph, whether as a node output, a graph input or an initializer of that graph. Names are therefore visible inwards.</p>

<p id="_a9ef2488-e771-da16-1891-d3cec9ddcd82">Shadowing is not permitted: a node output, a graph input or an initializer of a
subgraph SHALL have a name distinct from every name of the Value namespace that
is visible in that subgraph from an enclosing graph.<note id="_8b3f8978-d741-23ce-c0e0-a0d7dbf7c704"><p id="_43f384a7-fb51-26c0-1d2a-5c6444fd21db">Taken together, the two rules above make the definition that a use in a subgraph refers to unambiguous without stating a search order: at most one definition of any name is visible at any point.</p>
</note></p>


</clause>
</clause>

<clause id="_c93dd7c3-7638-98ac-6bdb-3643fc9bbed5" anchor="metadata" obligation="normative">
<title id="_f9bf085f-b969-8229-d6a2-7112cb4ca14c">Metadata</title>
<p id="_c4be7ed5-9410-05b9-7adf-10b18f9542ae">Metadata SHALL NOT affect the result of evaluating a model. A consumer MAY ignore any metadata it does not recognize.</p>

<p id="_7dc26df7-0c52-64e9-35fb-dbbe9c9619ff">A model MAY carry named metadata properties whose keys are distinct. <xref target="tbl-metadata" style="short"/> lists the keys this document defines; a key not listed is not reserved, and a producer MAY use one of its own.</p>

<table id="_f0a88940-d567-8c2b-dc10-96774cce8169" anchor="tbl-metadata"><colgroup><col width="33.3333%"/><col width="66.6667%"/></colgroup>
<name id="_fc04e4b0-aca4-ffbc-2efb-d7ad547e8c70">Metadata property keys</name>
<thead><tr id="_f07f2741-bda1-8b37-fda7-a15135701db7"><th id="_cb565797-d144-2627-79f9-5d4b31681847" valign="top" align="left">Key</th>
<th id="_f8d3eb98-28ea-1926-0a34-c09c51cc4a03" valign="top" align="left">Value</th>
</tr></thead>
<tbody><tr id="_9ae4325a-172b-e442-67a8-3063f3b95f39"><td id="_731e5793-3f4d-b634-cc8a-64a7fa30af60" valign="top" align="left"><tt>model_author</tt></td>
<td id="_3bce00c1-c812-6230-fdd3-2598b71458bc" valign="top" align="left">The names of the authors of the model, or of their organizations, separated   by commas.</td>
</tr><tr id="_f8c649b0-ef31-bc1a-e36f-36e181ac20b9"><td id="_69fe0ba2-6cea-864b-08d7-f4c5455cb66d" valign="top" align="left"><tt>model_license</tt></td>
<td id="_31aecf45-084c-ee3b-cb1e-1d6f918d7c45" valign="top" align="left">The well-known name of the licence under which the model is made available,   or a URL at which it may be read.</td>
</tr><tr id="_be8f01ae-7879-6fe8-793b-6e88ae89d1a2"><td id="_5a2c51da-e65e-5ad5-b37d-0a430b58bb9b" valign="top" align="left"><tt>Image.BitmapPixelFormat</tt></td>
<td id="_7833cf19-39f9-b9d8-3dc8-1f2a0cad9d88" valign="top" align="left">The channel order and bit depth of the pixel data of a value denoted <tt>IMAGE</tt>:   one of  <tt>Gray8</tt>, <tt>Rgb8</tt>, <tt>Bgr8</tt>, <tt>Rgba8</tt> or <tt>Bgra8</tt>.</td>
</tr><tr id="_81105534-ff86-54c5-84bf-8aa685ee9535"><td id="_1fc37d14-9679-9316-5084-48877b3396d3" valign="top" align="left"><tt>Image.ColorSpaceGamma</tt></td>
<td id="_416c7959-00ae-2ae0-21a2-1f6552dee5c3" valign="top" align="left">The colour space of such a value: <tt>Linear</tt> or <tt>SRGB</tt>.</td>
</tr><tr id="_60750ea8-73d0-b88c-120c-74596433bbd1"><td id="_0695c1ad-aeca-cdbb-87a5-39cc6baca7ae" valign="top" align="left"><tt>Image.NominalPixelRange</tt></td>
<td id="_90c7738b-a611-32ea-f779-e7b61528d266" valign="top" align="left">The range in which the pixel values of such a value are stored: one of    <tt>NominalRange_0_255</tt>, <tt>Normalized_0_1</tt>, <tt>Normalized_1_1</tt> or    <tt>NominalRange_16_235</tt>.</td>
</tr></tbody>
</table>

<p id="_741dc71e-2193-5312-463e-cb25cb4fc0bb">The <tt>Image.</tt> keys apply to every value of the model whose type carries the <tt>IMAGE</tt> denotation; see <xref target="denotation" style="short"/>. Their keys and values are compared without regard to case.</p>
</clause>

<clause id="_667b1a4c-2222-9260-3b8d-9c6919639c82" obligation="normative">
<title id="_b656fc2c-999c-bb2f-39ce-cdcea00e850c">Domains as the extension point</title>
<p id="_b7af8087-a398-c7ce-e827-b62f8d97a1a2">The <xref target="domain" style="short"><display-text>domain</display-text></xref> is the sole extension point of the information model. An operator outside the domains defined by  <eref type="inline" bibitemid="onnx-part-2" citeas="ONNX 1-2"/> is a custom operator; see  <xref target="maintenance" style="short"/>. A custom domain MAY also introduce value types of its own; see  <xref target="opaque-types" style="short"/>.</p>
</clause>
</clause>

<clause id="_f68efee2-d497-d54a-7c8e-d095a66b0401" obligation="normative">
<title id="_12b4f6f9-ac81-b428-3924-b09a16131112">Type system</title>
<clause id="_91254938-c194-61dc-a8b5-c34d2dda9d5a" obligation="normative">
<title id="_24abdf30-6d12-8734-45d3-cd1948186a03">General</title>
<p id="_712ff5d5-e62b-5032-902d-6928be2b2119">Every value in an ONNX <xref target="graph" style="short"><display-text>graph</display-text></xref> has a type. Types are either tensor types, sparse tensor types, sequence types, map types, optional types or opaque types.</p>

<p id="_ca488490-fad5-ac3a-d403-ea9881d96e22">Primitive numeric, string and Boolean types SHALL be used only as the element types of tensors; they are not themselves value types.</p>
</clause>

<clause id="_6061e36d-fd6a-8ddd-00b6-fa0d1cd7d350" anchor="element-types" obligation="normative">
<title id="_715cae5a-750b-06a9-df11-daf17bb50a61">Element types</title>
<p id="_72d383fc-c50e-8a65-c699-5132df45fa94"><xref target="tbl-element-types" style="short"/> is the complete enumeration of element types. The tag of each type is part of the wire format and is therefore normative: a consumer SHALL interpret the tag as the type named in the same row, and SHALL NOT assign a meaning to a tag not listed.</p>

<p id="_dadea004-c234-77c5-529d-cda3eb19b905">The tag 0 (<tt>UNDEFINED</tt>) SHALL NOT appear as the element type of a value.</p>

<table id="_8902f726-7288-fd39-32fc-281bf4a46439" anchor="tbl-element-types"><colgroup><col width="11.1111%"/><col width="33.3333%"/><col width="55.5556%"/></colgroup>
<name id="_91e58c89-62e7-b94f-da61-b8ad9af8ecf8">Element types and their wire tags</name>
<thead><tr id="_226c370a-3480-cb1e-9c0c-f4471fc426f1"><th id="_d3f798c1-53d0-231b-ea02-5065475c7032" valign="top" align="left">Tag</th>
<th id="_95c26757-a942-dbaf-06a9-9d63e2aeb767" valign="top" align="left">Name</th>
<th id="_b53bb67a-37bf-ae03-b01a-39577a753b29" valign="top" align="left">Description</th>
</tr></thead>
<tbody><tr id="_cfed7be4-4078-cedb-a49e-7c6c851e5ce3"><td id="_f4c06404-f850-5841-4e47-7eaf8d4202e3" valign="top" align="left">1</td>
<td id="_535d2037-e5ef-5759-94b7-961c84dcc25c" valign="top" align="left"><tt>FLOAT</tt></td>
<td id="_dd852c98-b66b-23ce-f3a5-051352c4102e" valign="top" align="left">binary32 as specified in <eref type="inline" bibitemid="ieee754" citeas="IEEE 754-2019"/></td>
</tr><tr id="_15b27dc6-2934-ed35-211f-75ecaa9c1feb"><td id="_7a6d0acd-c633-9a7c-21c4-14c316d6b648" valign="top" align="left">2</td>
<td id="_2af42680-6628-5005-97fe-4b0ef68771a4" valign="top" align="left"><tt>UINT8</tt></td>
<td id="_e237416e-0850-a7c2-1097-19211ddbb144" valign="top" align="left">8-bit unsigned integer</td>
</tr><tr id="_b584b002-42dd-fd23-1cad-1a5a49fa5a7d"><td id="_3787d120-af79-6f6e-0c32-c6aff9aa3e0f" valign="top" align="left">3</td>
<td id="_3041901a-eb00-9d3c-cd6e-e1ce6a5305f3" valign="top" align="left"><tt>INT8</tt></td>
<td id="_8b9db1d9-8169-8229-64b9-adebb17b08e2" valign="top" align="left">8-bit two’s complement integer</td>
</tr><tr id="_a88573c8-7956-a23e-9b63-835f27345f11"><td id="_e095cc8d-9652-1c74-78e1-8b02c788f5e1" valign="top" align="left">4</td>
<td id="_c710ccf9-aed4-3369-2b16-e7c238ed2928" valign="top" align="left"><tt>UINT16</tt></td>
<td id="_1225e9f3-b74d-2c50-1d33-3f06b16ece26" valign="top" align="left">16-bit unsigned integer</td>
</tr><tr id="_6250defe-65a4-0e8f-8c51-cb61d948bed9"><td id="_ff201a49-956d-5ce1-fc61-5f30b77f4156" valign="top" align="left">5</td>
<td id="_03300f37-dbdd-6847-a776-16d9822acdd8" valign="top" align="left"><tt>INT16</tt></td>
<td id="_18757520-ab4f-d0f1-7c92-97c620cfbe08" valign="top" align="left">16-bit two’s complement integer</td>
</tr><tr id="_2d8b2933-bda3-94f1-6654-e866a80fd00a"><td id="_6f634232-9b6f-5e78-d5bf-600fc9205941" valign="top" align="left">6</td>
<td id="_5e03e586-3bc0-3d52-cd2b-4ec1a08e05ea" valign="top" align="left"><tt>INT32</tt></td>
<td id="_41290139-789a-0bed-d612-18a2d240c9a9" valign="top" align="left">32-bit two’s complement integer</td>
</tr><tr id="_43a9dd74-4cd8-49df-741e-14efe851454e"><td id="_9f0f642d-ee76-d6f2-ad6b-00d8e2b8bbd3" valign="top" align="left">7</td>
<td id="_4be8f988-79e1-6378-ed8b-f19a25208385" valign="top" align="left"><tt>INT64</tt></td>
<td id="_310112a5-42d1-320b-2248-9e8bee130f47" valign="top" align="left">64-bit two’s complement integer</td>
</tr><tr id="_8d75fa20-c9fb-125f-c210-05b691648971"><td id="_1f1c566f-71f7-3a71-e6cf-6fbe3068542d" valign="top" align="left">8</td>
<td id="_212b854e-f5e8-08c2-0d6c-578f8d3e70f9" valign="top" align="left"><tt>STRING</tt></td>
<td id="_6673589c-f3a4-ac2e-b90f-6ae847f0b535" valign="top" align="left">sequence of octets; see <xref target="string-elements" style="short"/></td>
</tr><tr id="_de99283a-c83f-9c54-b09b-9c10f2029ccf"><td id="_51a21bed-f699-e6b9-0a74-e3ad21551fce" valign="top" align="left">9</td>
<td id="_92fa1c62-0ea7-e120-aa6f-5ca7df84ed55" valign="top" align="left"><tt>BOOL</tt></td>
<td id="_2db84a3f-4506-fcfe-82d4-fc8ea4dabe67" valign="top" align="left">Boolean</td>
</tr><tr id="_eb459c56-d0eb-c0be-0cad-0bbb9cb0f77f"><td id="_20ae1b78-33b2-da09-641f-647513d2f0b0" valign="top" align="left">10</td>
<td id="_8d4e0e54-7ad3-f6b7-2bc0-858b514719d1" valign="top" align="left"><tt>FLOAT16</tt></td>
<td id="_2b15d2ce-df25-6f46-b480-cfcdeddc3e8e" valign="top" align="left">binary16 as specified in <eref type="inline" bibitemid="ieee754" citeas="IEEE 754-2019"/></td>
</tr><tr id="_aff42e69-4019-347f-9458-75dc8027ea0e"><td id="_5d039343-02a9-2767-1e4c-4d35bb96c3fa" valign="top" align="left">11</td>
<td id="_50f7dbb6-02ac-b2c3-33a9-70d817909b01" valign="top" align="left"><tt>DOUBLE</tt></td>
<td id="_7ebf01de-f9fd-b67d-d981-bcda5140d3c9" valign="top" align="left">binary64 as specified in <eref type="inline" bibitemid="ieee754" citeas="IEEE 754-2019"/></td>
</tr><tr id="_06fe7ae5-0632-0bdb-a368-409a94f44a19"><td id="_d52dcbaf-1469-a684-77f4-7bd2c274122a" valign="top" align="left">12</td>
<td id="_88ef0500-ad62-efba-79f3-c07265ed93b9" valign="top" align="left"><tt>UINT32</tt></td>
<td id="_4b5cbdbb-3171-d271-618b-80f42abc228a" valign="top" align="left">32-bit unsigned integer</td>
</tr><tr id="_1986992a-a141-e74a-21e0-1aba1f6fbf77"><td id="_c6c75a3b-53ea-04cf-a6d3-d82809e11003" valign="top" align="left">13</td>
<td id="_39418938-94be-059a-6052-555053c1d434" valign="top" align="left"><tt>UINT64</tt></td>
<td id="_fbfeda6b-6ce8-7f9a-c6d8-2ead6c84d497" valign="top" align="left">64-bit unsigned integer</td>
</tr><tr id="_6aa2a86c-72a8-1125-ea52-ae188bd29931"><td id="_837444ba-9f9e-0f56-b47e-0a33281f101f" valign="top" align="left">14</td>
<td id="_b7150f06-34f8-da05-3815-ed7e3c4b7ea7" valign="top" align="left"><tt>COMPLEX64</tt></td>
<td id="_5c3af897-7b3e-2459-91ea-e1c0fb3e33b3" valign="top" align="left">complex number with <tt>FLOAT</tt> real and imaginary parts</td>
</tr><tr id="_357e21be-243d-2856-686a-c4b3844a72ce"><td id="_82569740-271b-3178-0a14-9f47f5d7b57a" valign="top" align="left">15</td>
<td id="_91cbbd56-0c90-040e-0a07-5235afdd5323" valign="top" align="left"><tt>COMPLEX128</tt></td>
<td id="_f4e9c516-143a-85ed-3c79-fa5740406d02" valign="top" align="left">complex number with <tt>DOUBLE</tt> real and imaginary parts</td>
</tr><tr id="_d62ae3e1-2406-85ca-c0dd-664493a71a2c"><td id="_d0832994-7a42-c3a4-6ef2-c1b62f777070" valign="top" align="left">16</td>
<td id="_8ec55990-a265-db1e-159b-0601acc737e4" valign="top" align="left"><tt>BFLOAT16</tt></td>
<td id="_f15e6ea7-8258-e9ad-1619-f02169c53618" valign="top" align="left">1 sign bit, 8 exponent bits, 7 mantissa bits; not an <eref type="inline" bibitemid="ieee754" citeas="IEEE 754-2019"/> format</td>
</tr><tr id="_dea14794-fa95-76e3-f524-7268faa75822"><td id="_9219263d-c837-9cae-004c-1060fdbf02c8" valign="top" align="left">17</td>
<td id="_3deb8d5a-91fa-5b09-a5cf-3d6122702227" valign="top" align="left"><tt>FLOAT8E4M3FN</tt></td>
<td id="_dd4c557e-482a-3217-e205-9b7f87f8aaf4" valign="top" align="left">see <xref target="reduced-precision" style="short"/></td>
</tr><tr id="_771f357a-8cac-8ead-2c3a-f6d03ae11ac9"><td id="_c931a604-1cd0-8f47-67ef-0ab51b2bd6a2" valign="top" align="left">18</td>
<td id="_28647ed1-f047-bd1a-536d-3e6875dea867" valign="top" align="left"><tt>FLOAT8E4M3FNUZ</tt></td>
<td id="_768f2d10-ca75-752a-a1db-f674542f4494" valign="top" align="left">see <xref target="reduced-precision" style="short"/></td>
</tr><tr id="_c82712f1-2f3c-1887-b13a-2bb217aa8d69"><td id="_c062acd6-3f01-243d-35c9-de9d4530e551" valign="top" align="left">19</td>
<td id="_541a3252-36e4-30bb-f201-1a6eef70e9db" valign="top" align="left"><tt>FLOAT8E5M2</tt></td>
<td id="_52e4c043-c8d9-6664-38a8-d0b82586787c" valign="top" align="left">see <xref target="reduced-precision" style="short"/></td>
</tr><tr id="_43eb4cad-d18c-b40c-a3ef-116a468fda8a"><td id="_d19ec432-10d0-cc46-7fc3-bad48abec122" valign="top" align="left">20</td>
<td id="_7972cb13-392e-3782-070b-c32470441c2d" valign="top" align="left"><tt>FLOAT8E5M2FNUZ</tt></td>
<td id="_722299bd-097b-c61d-affc-e92824ae9417" valign="top" align="left">see <xref target="reduced-precision" style="short"/></td>
</tr><tr id="_38eaf69e-930b-1e05-5ee1-6769f18bcf32"><td id="_22ec9768-066a-23b3-6451-405704054eeb" valign="top" align="left">21</td>
<td id="_73fbcf0b-6d89-8f79-3e38-d763465e8424" valign="top" align="left"><tt>UINT4</tt></td>
<td id="_df738a85-9680-618e-1930-c98ae160c5b4" valign="top" align="left">4-bit unsigned integer, range <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mrow>
      <mo>[</mo>
      <mn>0</mn>
      <mo>,</mo>
      <mn>15</mn>
      <mo>]</mo>
    </mrow>
  </mstyle>
</math><asciimath>[0, 15]</asciimath></stem></td>
</tr><tr id="_6073cc49-a040-5209-2997-3d7890474bc6"><td id="_d3a52870-62f7-3f31-ab8e-a583c90ad54f" valign="top" align="left">22</td>
<td id="_ab51e6a6-3a76-d941-277f-4c1fd89aeeeb" valign="top" align="left"><tt>INT4</tt></td>
<td id="_0cbb51c2-216b-8c6d-909c-6c4dbd9b8273" valign="top" align="left">4-bit two’s complement integer, range <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mrow>
      <mo>[</mo>
      <mo>−</mo>
      <mn>8</mn>
      <mo>,</mo>
      <mn>7</mn>
      <mo>]</mo>
    </mrow>
  </mstyle>
</math><asciimath>[-8, 7]</asciimath></stem></td>
</tr><tr id="_46219337-63e5-6f2f-4a38-1ba5fe94a655"><td id="_c4d6e4bf-d44d-c2bf-6726-b242e5f6101a" valign="top" align="left">23</td>
<td id="_9b20b3e0-6796-63e4-305d-4a37ec3bc88c" valign="top" align="left"><tt>FLOAT4E2M1</tt></td>
<td id="_49a9a523-8270-88fc-1127-5deff8f5b67a" valign="top" align="left">see <xref target="reduced-precision" style="short"/></td>
</tr><tr id="_1699ebca-4d2a-cc21-afc4-3358acbb146d"><td id="_5813141d-4937-8ec5-196e-d9fa7a2565d2" valign="top" align="left">24</td>
<td id="_0d39605d-24e6-e849-903b-53f95c17b0e9" valign="top" align="left"><tt>FLOAT8E8M0</tt></td>
<td id="_8ba748cf-c199-86ff-5efb-49140e39f620" valign="top" align="left">see <xref target="reduced-precision" style="short"/></td>
</tr><tr id="_a54d13fd-9592-282c-e43a-6456c3ec935f"><td id="_95581c05-c37b-8e45-6a6f-457b6443ae6d" valign="top" align="left">25</td>
<td id="_f70f9353-5182-7118-ae60-97dc5648df33" valign="top" align="left"><tt>UINT2</tt></td>
<td id="_9695ea72-2c82-5e6f-44d5-92b47ec2cef3" valign="top" align="left">2-bit unsigned integer, range <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mrow>
      <mo>[</mo>
      <mn>0</mn>
      <mo>,</mo>
      <mn>3</mn>
      <mo>]</mo>
    </mrow>
  </mstyle>
</math><asciimath>[0, 3]</asciimath></stem></td>
</tr><tr id="_e09018a8-1e53-84c5-8c10-0f1b0d5bf008"><td id="_70816727-f3bd-15af-4445-7ce35992bdb3" valign="top" align="left">26</td>
<td id="_a338dabb-6f4f-8d25-f34f-27979de70dd9" valign="top" align="left"><tt>INT2</tt></td>
<td id="_70689c58-1f4a-3764-40c1-f2eb153a26f2" valign="top" align="left">2-bit two’s complement integer, range <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mrow>
      <mo>[</mo>
      <mo>−</mo>
      <mn>2</mn>
      <mo>,</mo>
      <mn>1</mn>
      <mo>]</mo>
    </mrow>
  </mstyle>
</math><asciimath>[-2, 1]</asciimath></stem></td>
</tr><tr id="_e599abd9-c6a2-2c62-9a45-290516c351a2"><td id="_ad8871d7-edd4-d321-2a7d-fc3bceb2d9bd" valign="top" align="left">27</td>
<td id="_f118e11a-a68f-9329-578b-9bc6f97be87a" valign="top" align="left"><tt>FLOAT6E2M3</tt></td>
<td id="_76b7f447-c25a-3fdb-b300-516770abb992" valign="top" align="left">see <xref target="reduced-precision" style="short"/></td>
</tr><tr id="_40a07c04-85a3-4851-61eb-be652c8a226e"><td id="_326ae504-e26e-a4d8-f94f-e703a46337fd" valign="top" align="left">28</td>
<td id="_213d867a-1114-ec00-f794-79410e685837" valign="top" align="left"><tt>FLOAT6E3M2</tt></td>
<td id="_44fe52c9-3e91-1cc8-6a8e-9ee5eab86dc1" valign="top" align="left">see <xref target="reduced-precision" style="short"/></td>
</tr></tbody>
<note id="_f5d51baf-bcd3-3b82-b013-3002caf8d8c8"><p id="_71f196c7-1cf1-c2d7-ddd1-a64fc5ba168f"><tt>BFLOAT16</tt> is the binary32 format truncated to 16 bits. It has the exponent range of binary32 and the reduced precision of a 7-bit significand, and is therefore not one of the  <eref type="inline" bibitemid="ieee754" citeas="IEEE 754-2019"/> interchange formats.</p>
</note></table>


</clause>

<clause id="_39b8eaea-652d-2d09-e0ad-5eda8c788569" anchor="reduced-precision" obligation="normative">
<title id="_79d0cc32-d050-d1e7-45d9-913c7513d480">Reduced-precision element types</title>
<clause id="_1b4d2ba9-2394-9328-b5b5-2d651c936f4e" obligation="normative">
<title id="_0cdaf76f-b31a-1f39-88f7-f3405e1bbead">General</title>
<p id="_2007e76a-f435-5fca-c504-06debb27712a">ONNX defines floating-point element types narrower than the <eref type="inline" bibitemid="ieee754" citeas="IEEE 754-2019"/> interchange formats, and integer element types narrower than eight bits. This subclause states their value encoding and their packing into octets. The packing is part of the wire format and is therefore normative.</p>

<p id="_8af3377e-4a66-3899-88cc-07e12b362e5c">Support for these types is not required of every <xref target="conforming-implementation" style="short"><display-text>conforming implementation</display-text></xref>; see  <xref target="conformance" style="short"/>.</p>
</clause>

<clause id="_9aaad87a-e28d-0d83-cf5e-bef8021c4d3b" obligation="normative">
<title id="_f3ad2cd9-85bb-fd5a-9f8e-7483c6086c7d">Narrow floating-point formats</title>
<p id="_51a601c0-75c8-5c4c-774c-90e6733a5562"><xref target="tbl-narrow-float" style="short"/> states, for each narrow floating-point type, the width of its sign, exponent and mantissa fields, its exponent bias, and whether it encodes infinities and NaN.</p>

<table id="_1578eead-b4a6-01fc-b177-1a6ce45f70c6" anchor="tbl-narrow-float"><colgroup><col width="25%"/><col width="12.5%"/><col width="12.5%"/><col width="12.5%"/><col width="12.5%"/><col width="12.5%"/><col width="12.5%"/></colgroup>
<name id="_1af527ea-a256-ca84-0ebd-c6a98f11aa98">Narrow floating-point element types</name>
<thead><tr id="_020978be-279a-9b19-94eb-56d9737d1657"><th id="_68e9efc3-29c2-9613-1e8a-aa407e363b03" valign="top" align="left">Type</th>
<th id="_7ddb45c8-3da3-d248-fedd-a33686c7b5bc" valign="top" align="left">Sign</th>
<th id="_6eafe30b-4a95-fc00-ec67-6a5558671519" valign="top" align="left">Exp.</th>
<th id="_e9865ddd-6fcf-c63c-0e26-239baa65b75c" valign="top" align="left">Mant.</th>
<th id="_48be4138-cca2-9145-44f7-83ed68ac1283" valign="top" align="left">Bias</th>
<th id="_29a65df8-ac0e-8137-1bf8-7ac1dbc8109a" valign="top" align="left">Infinities</th>
<th id="_214b032b-2ea6-e117-1f7a-b11b4b9c0a1d" valign="top" align="left">NaN</th>
</tr></thead>
<tbody><tr id="_4a75a952-ecce-465e-5a52-161b188f709e"><td id="_8984dd53-63f8-875d-d622-fd739d1cd469" valign="top" align="left"><tt>FLOAT8E4M3FN</tt></td>
<td id="_c3b08500-57ad-dc24-efb9-cd816720af82" valign="top" align="left">1</td>
<td id="_16cc6b43-212b-8497-f1ba-ae5fc3ef183a" valign="top" align="left">4</td>
<td id="_e7dba813-b61e-7f88-0850-1d17008ab09e" valign="top" align="left">3</td>
<td id="_91e3675f-b418-a45d-8abc-a5da0b5ebef6" valign="top" align="left">7</td>
<td id="_f5e335ea-ee75-8ff1-ce61-419019f11cf3" valign="top" align="left">no</td>
<td id="_4152fb2e-82da-9b00-7ace-00e75e6b655d" valign="top" align="left">yes</td>
</tr><tr id="_0d462f36-b9c1-5823-e373-ccff4bb8c2a5"><td id="_44c5c867-152a-8f19-b871-50efc2f2eba2" valign="top" align="left"><tt>FLOAT8E4M3FNUZ</tt></td>
<td id="_8348d229-af4e-76f6-47f6-f3dfe4a91c90" valign="top" align="left">1</td>
<td id="_567a7321-34e5-f467-46f8-c286b5458509" valign="top" align="left">4</td>
<td id="_718706c9-bb75-4e75-e657-ff94be68a135" valign="top" align="left">3</td>
<td id="_8e8fcf50-52e2-56ae-90d2-b71956c513b2" valign="top" align="left">8</td>
<td id="_b3099f3a-ee14-d3af-ba8b-6b265a6df213" valign="top" align="left">no</td>
<td id="_252f23bf-1ffb-e247-a0f9-32b7661320f7" valign="top" align="left">yes</td>
</tr><tr id="_0b68855b-1aa2-e459-9262-eef621ceaa2d"><td id="_00259194-33a0-8438-bd31-d3a15370ed35" valign="top" align="left"><tt>FLOAT8E5M2</tt></td>
<td id="_3e93fc76-c24e-0101-c594-80d0e607f165" valign="top" align="left">1</td>
<td id="_acdc0681-8a8c-f466-5c9b-c5dda7f5feff" valign="top" align="left">5</td>
<td id="_df034829-9b38-09dd-3f98-739423afcfb8" valign="top" align="left">2</td>
<td id="_3c475b55-452c-4d2d-5550-c753fa603fcd" valign="top" align="left">15</td>
<td id="_c6e94419-3cd7-b1b4-a640-311a73dc5e59" valign="top" align="left">yes</td>
<td id="_7933947f-7c44-70c2-4b66-d3b32d00c120" valign="top" align="left">yes</td>
</tr><tr id="_be1564ad-9b10-834b-8e3e-1a229572448c"><td id="_5e0d60e6-476f-d61b-562a-e5ac8d37c405" valign="top" align="left"><tt>FLOAT8E5M2FNUZ</tt></td>
<td id="_cbf9d3dd-2838-9f51-f64a-f1feec145a54" valign="top" align="left">1</td>
<td id="_e617e962-5971-0924-fff3-4ddd5fb45f67" valign="top" align="left">5</td>
<td id="_a1542117-d944-1547-e50b-0ea23ea881f8" valign="top" align="left">2</td>
<td id="_326a92df-a946-13b4-fb48-236c2f1ec3f3" valign="top" align="left">16</td>
<td id="_7ca33b64-d52e-336f-674d-e9d58309e24e" valign="top" align="left">no</td>
<td id="_388672d4-58a6-c07b-f727-da0b6154beb9" valign="top" align="left">yes</td>
</tr><tr id="_97443166-1832-5f86-328f-5c1c199b184a"><td id="_9d84b27d-1a47-82d8-dce4-c65e8fe259a2" valign="top" align="left"><tt>FLOAT6E2M3</tt></td>
<td id="_d9aab963-cba9-8cfe-04ea-8bf9f02d93c1" valign="top" align="left">1</td>
<td id="_c4000ed7-0b75-eaa4-e332-a2f2b45bb34e" valign="top" align="left">2</td>
<td id="_bf38f572-1461-1682-858d-140dea00b1ee" valign="top" align="left">3</td>
<td id="_18fa28d6-f9e3-8ecb-a148-aa4745cf3807" valign="top" align="left">1</td>
<td id="_e2c80d6c-0ebd-2317-39f1-40a998072a1f" valign="top" align="left">no</td>
<td id="_23fea662-baf4-d76d-c077-08fbc257ada7" valign="top" align="left">no</td>
</tr><tr id="_e6f48261-6c68-b941-47b7-fd82386ace5d"><td id="_bab22416-9858-a484-d1d0-1226ba9e5654" valign="top" align="left"><tt>FLOAT6E3M2</tt></td>
<td id="_0e8bfd25-1dae-986a-2853-ffdad4f56fbc" valign="top" align="left">1</td>
<td id="_75300887-31a8-ec1e-3fd1-1d37ff53fd32" valign="top" align="left">3</td>
<td id="_69f67a06-96d5-40e8-1af1-87e526262347" valign="top" align="left">2</td>
<td id="_6b0b8e1d-521c-d509-9852-a952ad645f7b" valign="top" align="left">3</td>
<td id="_6feca5c5-3b8b-d90b-6f4a-70273c941af8" valign="top" align="left">no</td>
<td id="_1875dced-64f9-bc8f-f925-b5c47ef041f2" valign="top" align="left">no</td>
</tr><tr id="_31697def-5674-5588-51d1-a22659c74413"><td id="_639dd804-0dc1-2389-0719-eff051875431" valign="top" align="left"><tt>FLOAT4E2M1</tt></td>
<td id="_d8b4ddda-2279-293f-f892-104ff7792a0d" valign="top" align="left">1</td>
<td id="_83e0e351-9ae1-55a7-35bd-f96af5bf13d6" valign="top" align="left">2</td>
<td id="_f631672e-b3b9-f61c-8c90-56063ac64786" valign="top" align="left">1</td>
<td id="_968148ea-e3a4-01e4-a696-c5f112a0208f" valign="top" align="left">1</td>
<td id="_0f3878c0-0bef-c9cb-8c9b-db5a01fa9869" valign="top" align="left">no</td>
<td id="_b83cbc68-0fb4-8da7-33f1-88db4827832f" valign="top" align="left">no</td>
</tr></tbody>
</table>

<p id="_02d9cfea-aac6-7fcc-9bea-5c6bd2283881">A type whose name ends in <tt>UZ</tt> SHALL NOT encode a negative zero: the encoding that would otherwise denote it denotes NaN instead.</p>

<p id="_7915294a-6ba3-18de-edf0-b05126a776d9"><tt>FLOAT8E8M0</tt> is an 8-bit type consisting of an exponent field only, with no sign bit and no mantissa. It is used as the shared scale of a microscaling block format and SHALL NOT be used to represent a signed quantity.</p>

<p id="_0a517230-9710-940c-b8d1-ee8648b5cf78">Conversion from a narrow floating-point type to a wider one SHALL be exact. Conversion to a narrow floating-point type SHALL round to nearest, ties to even.</p>

<p id="_e77179b0-866f-332b-6f64-fbbf8be77567">Where the magnitude of a value exceeds the largest finite value the target type represents, the result is either that largest finite value with the sign of the operand, or NaN. Which of the two applies is a property of the operator performing the conversion and is stated in its definition in  <eref type="inline" bibitemid="onnx-part-2" citeas="ONNX 1-2"/>; this document does not fix it.</p>

<admonition id="_91416201-8497-931f-f761-f71e40590afa" type="important">
<name id="_c4137865-cf4d-5853-f716-76c8d2c7f69e">Editorial note</name>
<p id="_a7132bed-234b-5809-95f8-eb36af7d2f15">The rules above are stated as the upstream documentation states them, and two things are unsatisfactory about that. The first is the sentence immediately above: whether a conversion saturates is settled per operator rather than per type, by an attribute of  <tt>Cast</tt> in the default domain, so the same pair of types converts differently in two places in one model. A type system should decide this, and the operator should not be able to vary it.</p>

<p id="_3d7c2499-39f4-8088-7275-6c6ba194e659">The second is that the rules are not stated once for all types in <xref target="numerical" style="short"/>, and the tolerance that <eref type="inline" bibitemid="onnx-part-3" citeas="ONNX 1-3"/> needs in order to pass or fail a vector in these types does not follow from them. That remains the blocking gap recorded in Annex C.</p>
</admonition></clause>

<clause id="_ea507bd4-76d6-48f0-39fd-1a3dea591155" obligation="normative">
<title id="_6a0308c3-09b0-cf53-a8c1-e6124bd824b0">Narrow integer formats</title>
<p id="_10c117e3-317c-3720-0cf4-e3b2f3fb330e"><tt>INT2</tt>, <tt>UINT2</tt>, <tt>INT4</tt> and <tt>UINT4</tt> denote integers of the width and range given in  <xref target="tbl-element-types" style="short"/>. Conversion from a narrow integer type to a wider one SHALL be exact. Conversion to a narrow integer type SHALL round to nearest, ties to even.</p>

<admonition id="_4319bdc9-cc64-eb3f-177e-4dd50f196ad0" type="important">
<name id="_96c4c486-740a-dd3e-1063-3ec69d9188ef">Editorial note</name>
<p id="_7cc8e18e-fdac-df89-c49a-7df3cb3f0fa4">The result of converting a value that lies outside the range of the target type is unstated. The upstream documentation says the rounded value is truncated, without saying whether that means clamping to the range or discarding the leading bits; the two differ in sign as well as in magnitude. State one.</p>
</admonition></clause>

<clause id="_77e675ee-dadf-87d7-e1ee-76b7f24ea11b" anchor="packing" obligation="normative">
<title id="_820bd761-9867-83a6-5c6f-2d6c07c6ab9f">Packing</title>
<p id="_411662a5-306c-1e74-6b4e-45f6e6d66407">A tensor carries its elements either as an octet string, called raw storage here, or in a field typed for its elements, called typed storage. The two pack a narrow element type differently, and a tensor uses one or the other, not both.</p>

<p id="_03984ed1-ff8a-b9f8-d490-f9a39a886432">In raw storage, the elements SHALL be a bit stream, in order, each element occupying the next free bits of the current octet counting from its least significant bit. The storage size in octets of a tensor of  <tt>N</tt> elements of a type of width  <tt>w</tt> bits SHALL be the least integer not less than <tt>N * w / 8</tt>. Any bits of the final octet not occupied by an element SHALL be zero, and a consumer SHALL ignore them.</p>

<example id="_45d3c1ad-4b7e-5f40-5da1-aaf3654f3d72">
<name id="_f0176460-d909-98e9-8c46-587770e2cc58">Storage size in raw storage</name>
<p id="_d8df3d23-c68e-4f64-345f-2254f856ebcb">A tensor of 7 <tt>INT4</tt> elements occupies 4 octets, of which the four most significant bits of the fourth octet are padding. A tensor of 7  <tt>FLOAT6E2M3</tt> elements occupies 6 octets, of which the two most significant bits of the sixth octet are padding.</p>
</example>

<p id="_6ac06acf-20c7-9530-397a-fefbc1ff99b0">In typed storage, a narrow element type uses a sequence of 32-bit integers, and <xref target="tbl-typed-storage" style="short"/> states how many elements each integer carries and which of its bits they occupy. Every other bit of such an integer SHALL be zero.</p>

<table id="_e3144e76-e02c-ecb7-fdbf-fe06de39f7f2" anchor="tbl-typed-storage"><colgroup><col width="28.5714%"/><col width="14.2857%"/><col width="57.1429%"/></colgroup>
<name id="_ef202710-87ba-9c61-7e82-36ec50beb102">Narrow element types in typed storage</name>
<thead><tr id="_e407ffa1-a317-27a6-bd96-63da16839d10"><th id="_5dbc36a9-c5d9-d69e-2f82-6c6ccd4eb915" valign="top" align="left">Element width</th>
<th id="_95c09b0a-445d-381f-fe8b-3f256367528d" valign="top" align="left">Elements per integer</th>
<th id="_000189c2-97a9-436c-3936-5c178c451a34" valign="top" align="left">Bits occupied</th>
</tr></thead>
<tbody><tr id="_7daf884b-6787-d407-900e-29409c842aa7"><td id="_dcef1b5d-94bd-532c-1ae5-29b1ed7c67c7" valign="top" align="left">2 bits</td>
<td id="_d091a031-3722-fbd8-53f8-e6e081761584" valign="top" align="left">4</td>
<td id="_463c1ced-f13f-2f0a-1285-45e4f3caadde" valign="top" align="left">bits 0 to 1, 2 to 3, 4 to 5 and 6 to 7, in element order</td>
</tr><tr id="_4c5404ff-3058-9362-9b72-d05eb438a9e4"><td id="_a805d03a-8e34-bd79-95cc-6bc82b9eeab3" valign="top" align="left">4 bits</td>
<td id="_06a8e49e-61a5-606e-11ad-d1adf95daaab" valign="top" align="left">2</td>
<td id="_fd15606b-9b76-9e2b-3fe5-1d6dbe591e29" valign="top" align="left">bits 0 to 3 and 4 to 7, in element order</td>
</tr><tr id="_6c3f4d5e-4a9d-b593-b4e4-9ce2c07a3244"><td id="_8615bd5a-2274-4ce9-3d45-170af0348b28" valign="top" align="left">6 bits</td>
<td id="_8ed0db10-2346-87a8-673f-5c11559209fa" valign="top" align="left">1</td>
<td id="_18d0ea33-1742-3e9d-8ee5-4bb848899c01" valign="top" align="left">bits 0 to 5</td>
</tr></tbody>
</table>

<p id="_a61c9b3e-10c4-1e91-a91a-8b6985e796bc">A producer SHOULD use raw storage for a 6-bit element type. Typed storage costs at least one octet per element there, so it is not a packing at all.</p>

<p id="_4084d340-7daf-1ace-00ee-62d725159656">A floating-point element type narrower than 32 bits SHALL be written to typed storage as the unsigned integer whose bits are those of the element.</p>
</clause>
</clause>

<clause id="_81ed6b3a-f466-cc36-8cb6-636839d72b4e" anchor="string-elements" obligation="normative">
<title id="_edf3d202-ec5c-8b68-b31f-16d03171c775">String elements and character encoding</title>
<admonition id="_a23314e8-0044-7397-9fbe-d0b2dc6b3d3c" type="important">
<name id="_36108d36-1651-2828-1489-f3a8f639907c">Editorial note</name>
<p id="_388f08ca-ddb7-ffdd-3272-42fbd221615e">The reference implementation treats <tt>STRING</tt> elements as arbitrary byte strings, while much tooling assumes UTF-8. Decide whether this document requires  <eref type="inline" bibitemid="iso10646" citeas="ISO/IEC 10646"/> UTF-8 encoding or specifies octet strings with an encoding attribute. This is a normative change either way and MUST be raised with the Steering Committee. The upstream documentation does not settle it.</p>
</admonition></clause>

<clause id="_1122cb6a-b3dc-10b8-71ad-faa6d2976e23" anchor="shapes" obligation="normative">
<title id="_e471b314-ae80-2708-23b1-47acbf634f69">Shapes and dimensions</title>
<clause id="_86659a65-4c14-fd5a-7b46-da2bbe1beccf" obligation="normative">
<title id="_7eb03f83-975e-1c85-a4a0-857adc8028b9">General</title>
<p id="_e2f8505c-2c1f-c0d9-203e-42afc7391961">A shape is an ordered sequence of dimensions. Each dimension is one of:</p>

<ul id="_0c0c2a5b-6714-e67d-8fdd-b1d47d38037b"><li><p id="_d841a483-1b4f-dba1-0056-e10ac6c844fb">a non-negative integer, denoting a fixed extent;</p>
</li>
<li><p id="_42a60dfb-17b6-de5e-582f-b279471c208e">a dimension variable, denoting an extent that is not statically fixed;</p>
</li>
<li><p id="_4639f00b-7e43-5c2a-c6e0-72f5a2aac6f6">unknown.</p>
</li>
</ul>

<p id="_8b61b5d9-0160-0c9d-dd15-a2b7f89bc874">The number of dimensions in a shape is the rank of the tensor. A tensor with a shape of length zero is a scalar. A dimension of extent zero is permitted; a tensor having such a dimension contains no elements.</p>

<p id="_cdfdb674-464b-cbe4-46f5-fe23bba85ebc">A tensor type whose shape is absent denotes a tensor of unknown rank. This is distinct from a tensor of rank zero, and distinct from a tensor whose rank is known and whose extents are unknown.</p>

<p id="_4a0628c3-8fb7-62e6-85a6-c1932a3fdb0d">The inputs and outputs of a top-level <xref target="graph" style="short"><display-text>graph</display-text></xref> SHALL have a shape, so that their rank is stated, even where the individual extents are not.</p>
</clause>

<clause id="_597276da-af83-5e98-9220-34fa00bfb179" anchor="dimension-variables" obligation="normative">
<title id="_38a5f8fd-9b56-c0e3-a824-b6ae6c8e2f37">Dimension variables</title>
<p id="_8200939b-3ea1-8e45-a78e-41aacfd94e6e">A dimension variable is a name. Two occurrences of the same dimension variable SHALL denote the same extent at evaluation.</p>

<p id="_a2d273fa-4494-134c-116d-833b7ec6410d">Dimension variables are scoped to the <xref target="model" style="short"><display-text>model</display-text></xref>, not to a graph: an occurrence in a subgraph and an occurrence in an enclosing graph denote the same extent. This is what allows a model to relate an extent inside a subgraph to an extent outside it.</p>

<p id="_286c963e-ddd2-d243-e853-5d357261f68f">A dimension that is neither an integer nor a dimension variable is unknown, and
is unrelated to any other unknown dimension.<note id="_98e056d1-952e-b318-aa50-107677c63747"><p id="_7efaf773-971c-8fa3-fa86-c20a2db8614c">Because dimension variables are model-scoped, a value of a sequence type whose element shape names a variable is a sequence of tensors that all have that extent. A sequence whose elements differ in an extent has to omit that dimension from its element type, and one whose elements differ in rank has to omit the shape entirely.</p>
</note></p>



<p id="_a0891ad1-af41-d0bb-6254-6b9e5215e90d">The name of a dimension variable SHOULD adhere to the identifier syntax of <eref type="inline" bibitemid="iso9899" citeas="ISO/IEC 9899"/>.</p>
</clause>
</clause>

<clause id="_81c2d064-c32e-e308-66ce-ebbe58ee35f7" anchor="broadcasting" obligation="normative">
<title id="_cb5b32bf-ca5a-09ac-f4c8-acc17616a426">Broadcasting</title>
<clause id="_9df3c2d5-e9bf-a72c-70b7-512716561b08" obligation="normative">
<title id="_7a675f3d-a886-7b6d-db89-8e8a4e246974">General</title>
<p id="_efc0958f-bc0a-030b-6852-0f65ee645759">Two or more tensors of different shapes MAY be combined element by element where their shapes are broadcastable in one of the two senses defined below. An operator definition in  <eref type="inline" bibitemid="onnx-part-2" citeas="ONNX 1-2"/> states which, if either, of the two applies to it.</p>
</clause>

<clause id="_1ef1239d-e635-1f68-d658-49d2b23622bb" anchor="multidirectional" obligation="normative">
<title id="_e469e7c6-1476-cb3a-e69c-10ebd7981639">Multidirectional broadcasting</title>
<p id="_9b1d9931-3be2-b052-f942-c051434e563f">A set of tensors is multidirectionally broadcastable where, after each shape of rank lower than the greatest rank in the set has been extended on the left with dimensions of extent 1 until all shapes have that rank, every position holds, across the set, only extents that are equal to one another or equal to 1.</p>

<p id="_dc6f2970-126d-1482-844f-f9de10eb0986">The result has the greatest rank in the set, and its extent at each position is the greatest extent at that position.</p>

<example id="_431b6890-5b50-ecb9-cf75-c9b6ad44cef8">
<name id="_84a8b837-71a6-f649-90c3-2a27cc39c138">Multidirectional broadcasting</name>
<p id="_c7db39da-ece9-c733-bdea-7d6763c23642">Shapes <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mrow>
      <mo>(</mo>
      <mn>2</mn>
      <mo>,</mo>
      <mn>3</mn>
      <mo>,</mo>
      <mn>4</mn>
      <mo>,</mo>
      <mn>5</mn>
      <mo>)</mo>
    </mrow>
  </mstyle>
</math><asciimath>(2, 3, 4, 5)</asciimath></stem> and <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mrow>
      <mo>(</mo>
      <mo>)</mo>
    </mrow>
  </mstyle>
</math><asciimath>()</asciimath></stem> give <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mrow>
      <mo>(</mo>
      <mn>2</mn>
      <mo>,</mo>
      <mn>3</mn>
      <mo>,</mo>
      <mn>4</mn>
      <mo>,</mo>
      <mn>5</mn>
      <mo>)</mo>
    </mrow>
  </mstyle>
</math><asciimath>(2, 3, 4, 5)</asciimath></stem>; shapes
<stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mrow>
      <mo>(</mo>
      <mn>1</mn>
      <mo>,</mo>
      <mn>4</mn>
      <mo>,</mo>
      <mn>5</mn>
      <mo>)</mo>
    </mrow>
  </mstyle>
</math><asciimath>(1, 4, 5)</asciimath></stem> and <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mrow>
      <mo>(</mo>
      <mn>2</mn>
      <mo>,</mo>
      <mn>3</mn>
      <mo>,</mo>
      <mn>1</mn>
      <mo>,</mo>
      <mn>1</mn>
      <mo>)</mo>
    </mrow>
  </mstyle>
</math><asciimath>(2, 3, 1, 1)</asciimath></stem> give <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mrow>
      <mo>(</mo>
      <mn>2</mn>
      <mo>,</mo>
      <mn>3</mn>
      <mo>,</mo>
      <mn>4</mn>
      <mo>,</mo>
      <mn>5</mn>
      <mo>)</mo>
    </mrow>
  </mstyle>
</math><asciimath>(2, 3, 4, 5)</asciimath></stem>; shapes
<stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mrow>
      <mo>(</mo>
      <mn>3</mn>
      <mo>,</mo>
      <mn>4</mn>
      <mo>,</mo>
      <mn>5</mn>
      <mo>)</mo>
    </mrow>
  </mstyle>
</math><asciimath>(3, 4, 5)</asciimath></stem> and <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mrow>
      <mo>(</mo>
      <mn>2</mn>
      <mo>,</mo>
      <mn>1</mn>
      <mo>,</mo>
      <mn>1</mn>
      <mo>,</mo>
      <mn>1</mn>
      <mo>)</mo>
    </mrow>
  </mstyle>
</math><asciimath>(2, 1, 1, 1)</asciimath></stem> give <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mrow>
      <mo>(</mo>
      <mn>2</mn>
      <mo>,</mo>
      <mn>3</mn>
      <mo>,</mo>
      <mn>4</mn>
      <mo>,</mo>
      <mn>5</mn>
      <mo>)</mo>
    </mrow>
  </mstyle>
</math><asciimath>(2, 3, 4, 5)</asciimath></stem>.</p>
</example>
</clause>

<clause id="_a0bc09f3-6334-9bfb-d7a3-7e0806d9317b" anchor="unidirectional" obligation="normative">
<title id="_8971cc68-a033-c30e-23d5-469bc424aa6c">Unidirectional broadcasting</title>
<p id="_2511ce36-cab5-a308-23a8-b559086885cd">A tensor <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mi>B</mi>
  </mstyle>
</math><asciimath>B</asciimath></stem> is unidirectionally broadcastable to a tensor <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mi>A</mi>
  </mstyle>
</math><asciimath>A</asciimath></stem> where,
after the shape of <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mi>B</mi>
  </mstyle>
</math><asciimath>B</asciimath></stem> has been extended on the left with dimensions of
extent 1 until it has the rank of <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mi>A</mi>
  </mstyle>
</math><asciimath>A</asciimath></stem>, every position holds an extent of
<stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mi>B</mi>
  </mstyle>
</math><asciimath>B</asciimath></stem> that is either equal to the extent of <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mi>A</mi>
  </mstyle>
</math><asciimath>A</asciimath></stem> at that position or equal to 1.</p>

<p id="_db5bfb9a-9654-ba25-7a06-85d39c8ff3e2">The result has the shape of <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mi>A</mi>
  </mstyle>
</math><asciimath>A</asciimath></stem>. Unidirectional broadcasting is not
symmetric: that <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mi>B</mi>
  </mstyle>
</math><asciimath>B</asciimath></stem> is broadcastable to <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mi>A</mi>
  </mstyle>
</math><asciimath>A</asciimath></stem> does not imply the converse.</p>
</clause>

<clause id="_d548ccc0-338a-5d26-51d1-504bd9747371" obligation="normative">
<title id="_cf7ff626-bf0b-8112-f723-015bd8c15d77">Broadcasting and dimension variables</title>
<p id="_95985604-d8ac-5140-63cd-67e1052acc07">Where an extent is a dimension variable, it is equal to another extent only where that extent is the same dimension variable. A dimension variable is not known to be equal to 1, so a shape containing one is broadcastable only where the rule above is satisfied without appeal to the value of the variable.</p>
</clause>
</clause>

<clause id="_734a0a51-e8b4-28ac-0c8d-6c920271f5f7" anchor="denotation" obligation="normative">
<title id="_d23eeade-8332-0b77-bbc1-c16c2c790f1c">Denotation</title>
<clause id="_a5cb56df-ce81-2148-0cda-64a819999b31" obligation="normative">
<title id="_24e292be-c600-ed20-f753-56d9877c8cf8">General</title>
<p id="_37c2094a-e3e4-1b94-d357-f7cfd8b705dd">A type MAY carry a type denotation, and a dimension MAY carry a dimension denotation. A denotation ascribes a meaning to a type or an axis for the benefit of a  <xref target="producer" style="short"><display-text>producer</display-text></xref> or a <xref target="consumer" style="short"><display-text>consumer</display-text></xref>.</p>

<p id="_de165028-e6aa-c8cc-e5f4-d523f6907df0">A denotation SHALL NOT affect the result of evaluating a model. A consumer MAY ignore a denotation, and MAY reject a model whose denotations are inconsistent with the operators applied to the values concerned.</p>
</clause>

<clause id="_f7da1c2f-2d77-34af-2e34-f8a9f414d001" obligation="normative">
<title id="_7f05641a-8c67-fbd8-b1bf-8f4f31e4abc7">Type denotation</title>
<p id="_9e2a72b3-7bae-7d26-0535-488a544ac67f"><xref target="tbl-type-denotation" style="short"/> lists the defined type denotations.</p>

<table id="_52dfc99a-0c37-97da-dbc8-26f5f02ede4d" anchor="tbl-type-denotation"><colgroup><col width="25%"/><col width="75%"/></colgroup>
<name id="_a3aa0cea-b35f-d489-aa8f-352b0a11b9d0">Type denotations</name>
<thead><tr id="_ff334c9e-9377-2cbd-a112-4eddec2a34f2"><th id="_ab0fc5d9-d767-af26-b119-d91f4ac3ef29" valign="top" align="left">Denotation</th>
<th id="_385a3c9d-1bb2-d595-b809-068b715ed0db" valign="top" align="left">Meaning</th>
</tr></thead>
<tbody><tr id="_58b690af-8e24-4fb0-4707-c9ac87967ca6"><td id="_502aa88a-527b-6bf5-637c-6a2edb9c975b" valign="top" align="left"><tt>TENSOR</tt></td>
<td id="_e26aff2e-523f-180b-13a5-75309406a69f" valign="top" align="left">a tensor carrying no further ascribed meaning</td>
</tr><tr id="_dd80e7e1-a672-e611-7d6d-de2f7cf43023"><td id="_2bb3b7d5-defa-e153-653d-d1a39d213011" valign="top" align="left"><tt>IMAGE</tt></td>
<td id="_efc43cca-8c63-3c15-914a-ca6351ecb1ac" valign="top" align="left">an image; see <xref target="metadata" style="short"/> for the properties that describe it</td>
</tr><tr id="_1d8519ad-f8ca-c99b-dc53-6052ab97653f"><td id="_8a067898-b835-4d93-7384-3524217ade75" valign="top" align="left"><tt>AUDIO</tt></td>
<td id="_2bf5a71f-3bce-9591-3faa-ce30da8d2ff4" valign="top" align="left">an audio signal</td>
</tr><tr id="_ecca1e2f-6bc7-2e78-78ce-15a95931026a"><td id="_11c43443-ce5a-cba6-e797-21607a060cf2" valign="top" align="left"><tt>TEXT</tt></td>
<td id="_088695cf-6991-ebc2-fc30-3750e2bb9b2a" valign="top" align="left">a block of text</td>
</tr></tbody>
</table>
</clause>

<clause id="_edb447f9-2f26-e433-587f-0b6886013d97" obligation="normative">
<title id="_40c47b84-9f6e-c94e-9c81-e9f7a74baabc">Dimension denotation</title>
<p id="_4beba2dc-c2ea-2bc5-08a0-60dfab6d8e23"><xref target="tbl-dimension-denotation" style="short"/> lists the defined dimension denotations.</p>

<table id="_52a7dd9d-c064-4506-4557-8e2399abc618" anchor="tbl-dimension-denotation"><colgroup><col width="25%"/><col width="75%"/></colgroup>
<name id="_6e60be0f-c08e-01d0-b539-3c0c6b46fc11">Dimension denotations</name>
<thead><tr id="_7bedbd96-2d09-a52b-9c65-b7a2ba5cdf6b"><th id="_6e0e1a3e-236d-1270-a06f-8d50cdb60fad" valign="top" align="left">Denotation</th>
<th id="_c06c682b-1af2-1004-5d8a-d61cada0ef97" valign="top" align="left">Meaning</th>
</tr></thead>
<tbody><tr id="_fdb94c3c-c0ce-faea-b94c-2c369687cece"><td id="_90d68d5c-808c-a251-5f80-112eba4df656" valign="top" align="left"><tt>DATA_BATCH</tt></td>
<td id="_40e6fb4d-c602-a5b0-a34d-4bcee3f8ca28" valign="top" align="left">the batch axis of the data</td>
</tr><tr id="_06c13385-1a48-6e58-074c-a6961830fcf7"><td id="_262c674d-40af-d658-be95-8512c41f3860" valign="top" align="left"><tt>DATA_CHANNEL</tt></td>
<td id="_dde1345d-e0a3-3ec0-5f1d-5098ac7f90d3" valign="top" align="left">the channel axis of the data</td>
</tr><tr id="_d23ce67e-749a-1320-c547-5253b0ffa39f"><td id="_eb41a866-9778-550a-e34b-f9af9478ae5e" valign="top" align="left"><tt>DATA_TIME</tt></td>
<td id="_96062a34-f90b-c44b-969a-a023d2c76ae6" valign="top" align="left">a time axis</td>
</tr><tr id="_6d612956-df9a-a541-74ea-d859f34e1122"><td id="_2603a8d6-25e2-7c02-48d3-85831dc084c0" valign="top" align="left"><tt>DATA_FEATURE</tt></td>
<td id="_e42e3641-2450-1cc7-c60b-0d2d588dbc5f" valign="top" align="left">a feature axis, including the spatial axes of an image</td>
</tr><tr id="_6b06b57f-5568-7e23-7430-f42ae416df39"><td id="_7f7bf831-b951-9ef1-3f47-4ac00d762cdd" valign="top" align="left"><tt>FILTER_IN_CHANNEL</tt></td>
<td id="_fb5ffec5-7359-0f21-840f-b763722abf4d" valign="top" align="left">the input-channel axis of a filter</td>
</tr><tr id="_d3cc75c1-7a57-95a1-338b-9f3defa210ca"><td id="_e4babdef-c3dc-db2e-c434-9738004ef588" valign="top" align="left"><tt>FILTER_OUT_CHANNEL</tt></td>
<td id="_e675b422-7593-7c02-6987-0583334a931a" valign="top" align="left">the output-channel axis of a filter</td>
</tr><tr id="_e97720f8-ea14-048d-0226-39f4b872a3ba"><td id="_da58f9c0-c64b-e379-5e91-85c910a2e9fe" valign="top" align="left"><tt>FILTER_SPATIAL</tt></td>
<td id="_1d77e87b-1e03-2688-ee80-9c6bfb09ea12" valign="top" align="left">a spatial axis of a filter</td>
</tr></tbody>
</table>

<p id="_bc4e8c13-0023-5f2e-23f0-bd55c94a2374">An operator that permutes, removes or introduces axes propagates the
denotations of its input axes to the corresponding output axes.<note id="_987db63c-c533-bf73-6046-38b358edf4ab"><p id="_9309dd68-ca9a-7657-5d75-11e2729c65b4">Upstream describes denotation as an experimental mechanism. It is stated here because the encoding is part of the wire format and a consumer has to know what the values mean; nothing in this document requires a producer to supply a denotation.</p>
</note></p>


</clause>
</clause>

<clause id="_a9b3d635-2436-fff9-1060-825d04605880" obligation="normative">
<title id="_40620728-82d6-d7ab-2d50-953559f0219e">Composite types</title>
<clause id="_fc60da91-b88e-0cc4-249d-b06232220ccb" obligation="normative">
<title id="_2d0c863b-f2a7-ba99-c3f4-04a9a54f23fd">Sequence</title>
<p id="_cf184fe0-7d42-8923-3fa8-75e0313bb99a">A sequence is an ordered, homogeneous collection of values of a single type.</p>
</clause>

<clause id="_22629430-fd39-7905-ff1a-ea148cb68476" obligation="normative">
<title id="_a07a1c04-a4f3-9693-4e7f-a2b6ec370615">Map</title>
<p id="_0390c716-42d5-7948-c994-8e49614ca556">A map is an unordered association of keys of an integral or string element type to values of a single type.</p>
</clause>

<clause id="_dbe92f76-1b57-70f2-517d-69ab713d3af0" obligation="normative">
<title id="_2ad295f5-d20c-7a49-f6a8-fbd3e65b0a8b">Optional</title>
<p id="_1aa39fbc-7700-eb3a-c701-85b332384ae3">An optional value either holds a value of its element type or is absent. The element type is a tensor, sparse tensor, sequence or map type.</p>

<p id="_ed1d7d1e-9bde-252f-30da-b240ec18f6f1">An optional type is distinct from the type of its element: a value of type
optional tensor of <tt>INT64</tt> is not a value of type tensor of <tt>INT64</tt>. The
operators that convert between the two are defined in <eref type="inline" bibitemid="onnx-part-2" citeas="ONNX 1-2"/>.<note id="_728128c0-d73e-9efe-a24b-d6aed06d5ab0"><p id="_cf9224e3-1b64-b0e2-1e2e-5f80a1485621">This type is what <xref target="graph-structure" style="short"/> calls a dynamic-optional. It is not the same mechanism as an unsupplied operator input, which is described in <xref target="optional-io" style="short"/>.</p>
</note></p>


</clause>

<clause id="_6bf98cd8-842d-c2ce-1583-956ee7623ab5" anchor="opaque-types" obligation="normative">
<title id="_1ac518bf-dc65-5529-5010-7bdd68f3a64a">Opaque</title>
<p id="_bf024d88-36a4-6b31-1f5a-607191e28c66">An opaque type is identified by a pair of a <xref target="domain" style="short"><display-text>domain</display-text></xref> and a name. The name is required; an absent or empty domain denotes the default domain.</p>

<p id="_8a53832b-0111-755a-6465-0b854a71b512">The meaning of an opaque type is defined by the operators of its domain, and
this document ascribes none to it. A consumer that does not implement that
domain SHALL treat a value of the type as unanalysable, and SHALL NOT infer
anything from it beyond its identity.<note id="_4184ad8e-04fb-33fd-db59-f113fb5909c2"><p id="_866bbfb5-a430-6508-885f-78e8f1401277">An opaque type is how a custom domain introduces a kind of value of its own — a handle to something a pair of its operators pass between them — without a change to this document.</p>
</note></p>


</clause>
</clause>

<clause id="_e49d316c-cced-e260-96ed-8b195109eaaf" obligation="normative">
<title id="_9d549962-9a58-623f-e6b1-02831a833e47">Type equality and assignability</title>
<admonition id="_679b7be8-eccd-cfe5-51de-b40fd2e7a7a2" type="important">
<name id="_4cb0177c-4d8a-1aae-a6e2-96f6b0774357">Editorial note</name>
<p id="_fa98ba8b-c362-203f-0383-5e284e2b6281">State when two types are equal, and when a value of one type may be supplied where another is expected. Shape is part of the type, so this clause decides whether a tensor of unknown shape is assignable to a formal input of known shape, which in turn decides how much  <xref target="inference" style="short"/> is obliged to prove. The upstream documentation does not state this; it is a rule the working group has to settle.</p>
</admonition></clause>
</clause>

<clause id="_94f92076-e80c-9a9b-5e63-323336824c1d" anchor="graph-structure" obligation="normative">
<title id="_c7ca24f4-a00e-626d-8b86-0214fa067a73">Graph structure</title>
<clause id="_82f0e4b4-0b28-2027-2f56-5eb41aba61dd" obligation="normative">
<title id="_b7584e26-39e8-28b1-4271-dc1f60a36662">Graph, inputs and outputs</title>
<p id="_9bef1dc3-9ff1-ea21-62bd-41a8646d67a0">A <xref target="graph" style="short"><display-text>graph</display-text></xref> SHALL have a name, and SHALL declare its inputs, its outputs and, optionally, its initializers and value type information.</p>

<p id="_ee765e01-f794-ab94-77bd-47570f7e6bf8">A top-level graph SHALL declare the name, type and shape of each of its inputs and outputs. The shape states the rank; the individual extents need not be stated. See  <xref target="shapes" style="short"/>.</p>

<p id="_f98c9c14-4e10-b85d-d3d3-cb99def76b03">A subgraph SHALL declare the names of its inputs and outputs, and MAY declare their types.</p>

<p id="_0f9597f9-bf0b-9155-94fd-187747b6aab1">A graph MAY declare the type and shape of values that are neither its inputs nor its outputs. Such a declaration is a constraint on the value, not a definition of it.</p>
</clause>

<clause id="_320970c3-564a-8c4a-2196-c4e9f5b83c63" anchor="initializers" obligation="normative">
<title id="_de9e7c51-5b92-310a-eee8-0828b42c2329">Initializers</title>
<p id="_cb43d13b-1f15-a2c1-9db8-2d28e31db158">An initializer is a named tensor value carried in the graph. The order of the initializers of a graph is not significant.</p>

<p id="_0ea8b4c8-ee0d-c6f5-3311-4a37d1dd4bfc">Where an initializer has the same name as an input of the same graph, it specifies a default value for that input. A  <xref target="consumer" style="short"><display-text>consumer</display-text></xref> MAY allow the caller to supply a value for that input, overriding the initializer, and MAY allow the caller to omit it, in which case the value of the initializer is used.</p>

<p id="_ef4f6301-a59c-4033-4b1c-37e09cb49136">Where an initializer has a name that is not the name of an input of the same
graph, it specifies a constant. A caller SHALL NOT supply a value for it.<note id="_b8235020-732a-15ec-0407-a27d0d270791"><p id="_744e1ed1-3ee8-f64b-c72f-172e49369d5e">It follows that a producer that intends a value to be constant states it as an initializer only, and does not also declare it as a graph input.</p>
</note></p>



<p id="_3741a6cd-f0ee-74a8-39f6-6da9b74607d4">In a subgraph, a name SHALL NOT be both an input and an initializer, unless the operator whose attribute carries the subgraph states otherwise. The inputs a control-flow operator supplies to a subgraph are matched to the inputs of that subgraph positionally, so an initializer of a subgraph that is also declared as an input SHALL be declared after every input the operator supplies.</p>

<admonition id="_6e36b45a-57e1-4479-09b5-7f0645b08736" type="important">
<name id="_c069627d-19d4-b73b-e9f1-9e7db5613099">Editorial note</name>
<p id="_4ac35972-d09a-fa7e-affa-62e394045af9">The subgraph rule above holds for models produced against IR version 4 and later. Earlier models were permitted to use one name as both a subgraph input and a subgraph initializer in order to carry a constant, and models in circulation rely on it. State whether this document admits those models, and if so under what compatibility rule; see  <xref target="versioning" style="short"/>.</p>
</admonition></clause>

<clause id="_0d4316e3-4b10-bbb7-1c6c-e3867672f960" obligation="normative">
<title id="_91b7b26d-730e-1c84-8275-199c086abbd6">Nodes</title>
<clause id="_dea96d42-05a7-df32-567d-947e54b0f44c" obligation="normative">
<title id="_2ba2f2b6-9869-8a71-fc35-752cd3796612">General</title>
<p id="_87c5e660-93e8-c727-c1c9-90d46f990bc0">A <xref target="node" style="short"><display-text>node</display-text></xref> SHALL identify the <xref target="operator" style="short"><display-text>operator</display-text></xref> it invokes by domain and name.</p>

<p id="_ba96e7f9-d95d-af2c-49bc-563625eaf74e">The number and types of a node’s inputs and outputs, and the set and types of its attributes, SHALL satisfy the signature of the operator as defined in the operator set version declared by the enclosing model.</p>

<p id="_e5aad1ab-daca-0271-0d2b-9139de1a6644">A node’s inputs and outputs are matched to the formal inputs and outputs of its operator by position. Its attributes are matched by name.</p>

<p id="_58e89166-04fc-ed33-7d13-c620bf2a11eb">A node MAY have a name. A node name is for diagnostic purposes and SHALL NOT affect the result of evaluating the graph.</p>
</clause>

<clause id="_372fbb6d-4ad2-703a-d593-6c9844d8001c" obligation="normative">
<title id="_fabf359b-5c5b-3f30-b46c-938cc0ba5b09">Variadic inputs and outputs</title>
<p id="_7330ae61-be44-89c2-5925-d38bc5d515ce">The last formal input or output of an operator MAY be variadic, in which case
the operator definition states its minimum arity <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mi>N</mi>
  </mstyle>
</math><asciimath>N</asciimath></stem>. A node invoking such
an operator SHALL supply <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mi>N</mi>
  </mstyle>
</math><asciimath>N</asciimath></stem> or more inputs, respectively outputs, in that position.</p>
</clause>

<clause id="_09d664bd-26d9-5117-1ebf-6325a6ae3000" anchor="optional-io" obligation="normative">
<title id="_bfabee42-8b6c-327a-3d15-dc30802fa53a">Unsupplied inputs and outputs</title>
<p id="_c16d656d-2879-6598-1c00-b38a1c524b3a">An operator definition MAY mark a formal input as optional, in which case a node invoking the operator MAY leave it unsupplied. An operator definition MAY mark a formal output as optional, in which case a consumer MAY forgo computing it where the node leaves it unsupplied.</p>

<p id="_05392968-adb8-8453-7e1f-01870c88b1aa">An input or output is left unsupplied in one of two ways: by omitting it, which is available only where it and every input or output after it is also omitted; or by giving an empty name in its position.</p>

<p id="_22c30d2c-7263-a204-eafd-b7d858fdb2b0">A node SHALL give a name for each output that is computed, and SHALL NOT give a
name for an output that is not.<note id="_1a380e9e-b5a5-71d4-e1c3-706a7095ac1e"><p id="_ac7cd6a4-4f2b-1063-2d32-f93e82947171">This mechanism is distinct from the optional type of <xref target="shapes" style="short"/>. Leaving an input unsupplied does not change the type of anything; the optional type is a type, and the operators that construct and destruct it are defined in <eref type="inline" bibitemid="onnx-part-2" citeas="ONNX 1-2"/>.</p>
</note></p>


</clause>
</clause>

<clause id="_db74bd3b-1f72-d3df-5271-285cb55f477a" obligation="normative">
<title id="_132ef7cc-0dba-e1fa-7c16-000cdb9bf08b">Attributes</title>
<p id="_178cae0e-4db8-1487-bdc7-27fcac9c1e91">An <xref target="attribute" style="short"><display-text>attribute</display-text></xref> SHALL have a name that is unique within its node.</p>

<p id="_b20ff825-d2f3-d8f6-5bc5-297d43e033e9">An attribute value SHALL NOT refer to a value produced by dataflow: it is fixed when the graph is constructed.</p>

<p id="_adbd907f-cd97-92d0-4f0e-e3edca74a68c">The value of an attribute is one of: a tensor, a sparse tensor, a numeric scalar, a string, a type, a graph, or a list of values of one of those kinds. The type system of attribute values is therefore not the type system of <xref target="shapes" style="short"/>, which applies to values carried by dataflow.</p>
</clause>

<clause id="_debf147a-bdc9-f742-ebd7-319d1222da05" obligation="normative">
<title id="_2371be7b-0e17-0108-d2f9-d27bd4d71f22">Topological constraints</title>
<p id="_bb045276-8690-ce18-778f-8f2397e2a3fa">The nodes of a graph SHALL be topologically sorted: every node SHALL appear after the nodes producing the values it consumes.</p>

<p id="_7d3f7f94-9608-0c2b-23df-93f12eacb9d6">The graph SHALL be acyclic.</p>

<p id="_2b2b972d-a90c-b155-cf6a-df784b4ea0d2">Every value consumed by a node SHALL be produced by exactly one of: a graph input, an initializer, an earlier node in the same graph, or an enclosing scope; see  <xref target="definitions-and-uses" style="short"/>.</p>

<p id="_eccb802c-2d59-c578-8570-233a9fa96f3b">A graph SHALL be in single static assignment form: every node output name SHALL be unique within the graph.</p>
</clause>

<clause id="_f9ee5319-bdba-b1d9-5a93-8131f2ae1dcf" anchor="subgraph-scoping" obligation="normative">
<title id="_1cc8c555-7c7e-ea6c-1e84-1388ef0708a3">Subgraphs and scoping</title>
<p id="_61c66f30-b8c8-628d-42f4-38a3bc415fed">Subgraphs appear as attribute values, and are evaluated by the operators that carry them; in the default domain these are  <tt>If</tt>, <tt>Loop</tt> and <tt>Scan</tt>.</p>

<p id="_0572f66e-e7c4-0ca8-65a0-db2ffbc27471">The names a subgraph may use from an enclosing graph, and the prohibition on shadowing, are stated in  <xref target="subgraph-visibility" style="short"/>. The names of a subgraph’s own inputs and initializers are constrained by  <xref target="initializers" style="short"/>.</p>

<p id="_86125d29-061f-2a2c-8fcc-41a32698acb8">The acyclicity requirement above applies to each graph separately. A subgraph SHALL NOT be reachable from itself through the attribute values of its own nodes.</p>

<admonition id="_f8c392c2-69d9-66a9-7917-b56f9cfc12d1" type="important">
<name id="_bccdd569-4f59-291c-3088-e4ebd6413dd1">Editorial note</name>
<p id="_03350fd0-e663-c059-f129-a72b527c9bd8">This clause now states the structural rules completely. What remains unwritten is the evaluation semantics of the operators that carry subgraphs: the branch selection of  <tt>If</tt>, the termination condition and loop-carried dependencies of <tt>Loop</tt>, and the scan axis handling of <tt>Scan</tt>. Those belong to <xref target="graph-semantics" style="short"/>, and the upstream documentation states them only in the operator definitions, which is to say in  <eref type="inline" bibitemid="onnx-part-2" citeas="ONNX 1-2"/>.</p>
</admonition></clause>
</clause>

<clause id="_193cb879-b015-9925-4880-69ad5877312e" anchor="graph-semantics" obligation="normative">
<title id="_4d247258-02ce-70d5-79c8-f4ebe62b3867">Graph semantics</title>
<clause id="_793d01b5-4eb3-2842-1b81-06ee55693eff" obligation="normative">
<title id="_a09762cb-e3d1-f90c-a0a7-9ef58b7d968e">Evaluation model</title>
<p id="_db8ef4c5-c935-112c-f2c5-de5f6fb2cea6">Evaluating a <xref target="graph" style="short"><display-text>graph</display-text></xref> means computing a value for each of its declared outputs, given a value for each of its declared inputs.</p>

<p id="_fc47360a-d2ac-728f-fca8-a6280d107c59">A <xref target="model" style="short"><display-text>model</display-text></xref> denotes a stateless function. Evaluating the same model on the same inputs SHALL yield the same outputs, save where an operator of the model is permitted to be non-deterministic; see  <xref target="determinism" style="short"/>.</p>

<p id="_7160db68-4da1-e051-1a09-1276ba47cae6">A graph has no side effects. In particular, an operator that would otherwise carry state across invocations expresses that state as an explicit output, which the caller passes to the next invocation as an input.</p>
</clause>

<clause id="_99ddedad-7b97-a792-b985-755381d82167" obligation="normative">
<title id="_c0dc1020-ae10-5524-3c41-71ea59818edc">Evaluation order and concurrency</title>
<p id="_facbe912-dca8-8be2-1394-a37fcf9ac467">Evaluation is defined by the dataflow relation between nodes. This document does not prescribe an evaluation order beyond the constraint that a node’s inputs are available before the node is evaluated; in particular, a <xref target="conforming-implementation" style="short"><display-text>conforming implementation</display-text></xref> MAY evaluate nodes concurrently, may elide nodes whose outputs are unused, and may fuse or reassociate computations, provided that the results remain within the tolerances of  <xref target="numerical" style="short"/>.</p>
</clause>

<clause id="_0c10e833-916e-3ac5-e3ea-f76bf9d65e15" obligation="normative">
<title id="_7be4e593-a5b2-9695-33c3-64c2f83ec622">Control flow</title>
<p id="_804356ed-e5cc-72aa-2267-13dd992dc1d1">The <tt>If</tt>, <tt>Loop</tt> and <tt>Scan</tt> operators evaluate subgraphs.</p>

<admonition id="_3dcacc1a-121b-cba2-a17d-ec5cb8459102" type="important">
<name id="_9bbdfbe0-eacb-c928-8d28-f103d0483262">Editorial note</name>
<p id="_bad8aaf4-ee19-1dac-a670-cad0cb9e28ef">Specify the evaluation semantics of each: the branch selection of <tt>If</tt>, the termination condition and loop-carried dependencies of  <tt>Loop</tt>, and the scan axis handling of  <tt>Scan</tt>. The structural constraints are in <xref target="subgraph-scoping" style="short"/>; this clause owes the semantics.</p>
</admonition></clause>

<clause id="_66344d39-bee8-eba6-680c-5852cb410aaf" anchor="functions" obligation="normative">
<title id="_af0e76e9-c86e-9fb2-f02a-41a5f43b91b8">Functions</title>
<p id="_49fb07cb-c42e-eed1-e94d-dd4bf90b9431">A function is an <xref target="operator" style="short"><display-text>operator</display-text></xref> together with an implementation of it in terms of other operators, called its function body. The body is a topologically sorted list of nodes, as a graph is.</p>

<p id="_a6bb4de2-e556-e3b1-c471-ff82b365af56">A function is identified by a triple of a <xref target="domain" style="short"><display-text>domain</display-text></xref>, a name and an overload. The overload distinguishes function bodies that are required to differ between call sites; where a model needs no such distinction the overload is empty. A function does not carry an operator set version of its own: the version is that of its domain, as imported by the model.</p>

<p id="_905d3970-3a04-9c4f-16a8-0cc5a8811938">The parameters of a function are its inputs, its outputs and its attributes. An attribute parameter MAY have a default value. Where a node in the body uses an attribute parameter, that use is replaced by the value the call site supplies; where the call site supplies none, it is replaced by the default value; where there is no default value, the attribute is omitted from that node.</p>

<p id="_839f9387-ea5d-133f-7c8b-6cd2f7c9c703">A function body is a fallback implementation, not a definition of the
operator’s numerical behaviour. A <xref target="conforming-implementation" style="short"><display-text>conforming implementation</display-text></xref> MAY compute the
operator by any means, and the tolerances of <xref target="numerical" style="short"/> apply to the
operator rather than to the evaluation of its body.<note id="_c0bbb8f2-e02c-f2ad-4204-4389c98ae20c"><p id="_1bbcc69b-b5be-583d-632f-cee1e4b9cc81">A function therefore serves two purposes at once. A consumer that does not implement the operator can still evaluate the model by expanding the body; a consumer that does implement it is not held to the body’s rounding.</p>
</note></p>



<p id="_a0f23dd4-50e1-1ad5-52e4-4419351a04c6">A function body MAY omit the types of the values it uses: a function MAY be polymorphic in the types of its parameters.</p>
</clause>

<clause id="_230c424d-b919-705d-84e9-163a183a7bd6" anchor="determinism" obligation="normative">
<title id="_064f24e8-50c8-9406-976a-bc5bb30304a1">Determinism</title>
<admonition id="_56c20b15-458b-49af-b4e8-96619547975c" type="important">
<name id="_41004b0a-b40d-973d-0b50-f4f57c9c5442">Editorial note</name>
<p id="_dd9996ec-45b3-8005-3c31-75c51a7f3307">State which operators are permitted to be non-deterministic (random number generation, and reductions whose order is unspecified in floating point) and what a producer may assume. Without this clause, “within tolerance” is not testable.</p>
</admonition></clause>

<clause id="_9604caa5-cee3-80bf-e75c-5c3c4c60a011" obligation="normative">
<title id="_432643ec-ca25-af4e-9f1d-610e218d4154">Error semantics</title>
<p id="_ebfa44d6-a98c-dbe4-a6b1-f87acb7c16f9">A consumer that detects a violation of a requirement of this document SHALL report it and SHALL NOT produce a result. A consumer MAY continue validation in order to report further violations.</p>
</clause>
</clause>

<clause id="_245ff2dd-d43e-ab8a-3ec0-f362fbb8bbf2" anchor="inference" obligation="normative">
<title id="_12f22f92-280b-2708-5bba-0e5a8d5c0e8f">Shape and type inference</title>
<clause id="_31401b72-a7f1-88ad-8202-a23854bf7467" obligation="normative">
<title id="_d0fe7de5-6e1e-b142-ea53-7c3704ee5df1">General</title>
<p id="_fa2b390e-e3f3-6e77-7f39-dd3bcd186f2b">Shape and type inference derives the types and shapes of values that a <xref target="model" style="short"><display-text>model</display-text></xref> does not state explicitly.</p>

<p id="_490d3bc6-9a85-54b2-3e98-2de00aeb0de9">Inference is normative rather than a convenience: consumers rely on it, and a <xref target="producer" style="short"><display-text>producer</display-text></xref> is permitted to omit value type information for values other than graph inputs and outputs.</p>
</clause>

<clause id="_0a931550-05f4-83f1-97b3-e5f5e32bafc8" anchor="inference-obligations" obligation="normative">
<title id="_9196963c-1673-fb7d-191e-82d8ddb66481">Obligations on operator definitions</title>
<p id="_70d6265b-b7c6-c149-8bae-facf4caad1c6">Every operator definition in <eref type="inline" bibitemid="onnx-part-2" citeas="ONNX 1-2"/> SHALL state the type and shape of each of its outputs as a function of the types and shapes of its inputs and of its attributes.</p>
</clause>

<clause id="_daa43adb-9456-4103-fa09-a3b09cdc54c3" obligation="normative">
<title id="_f627b467-c78e-3ca5-225a-94acfa472d90">Symbolic dimensions</title>
<p id="_336abd95-7b83-b46a-e80f-5a177b1fa2da">Where an output extent equals an input extent, the operator definition SHALL say so, so that a symbolic dimension propagates.</p>

<p id="_e2e9d1b8-5f75-f48c-cbe0-d2342e584b19">An implementation MAY introduce a fresh dimension variable for an extent it cannot determine, and every occurrence of that variable denotes the same extent as any other (<xref target="dimension-variables" style="short"/>).</p>

<p id="_d75d3d4f-b87e-c569-5058-d4f64e2a9447">An implementation SHALL NOT conclude that two distinct dimension variables
denote the same extent, and SHALL NOT conclude that a dimension variable
denotes any particular integer.<note id="_ee84f210-eb2c-91ea-4b7c-64d47635c417"><p id="_14d3b679-e7b6-7723-35ee-4018740b9c7a">It follows that inference does not compute over extents. Concatenating a
tensor of extent 5 with one of extent 7 gives 12; concatenating one of extent 5
with one of extent <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mi>N</mi>
  </mstyle>
</math><asciimath>N</asciimath></stem> gives a fresh variable, not <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mi>N</mi>
    <mo>+</mo>
    <mn>5</mn>
  </mstyle>
</math><asciimath>N + 5</asciimath></stem>.</p>
</note></p>


</clause>

<clause id="_833cc4ba-020d-d1c3-3291-193e0964fc93" obligation="normative">
<title id="_90bc3173-3a58-e72a-f4f2-25ab6f394bf9">Strictness and failure</title>
<p id="_8ea485e2-d397-c300-c346-7f3549d1f4cd">Inference is not required to be exact. Where an implementation cannot determine the type or the shape of a value, it SHALL yield unknown for that value rather than a value that is not entailed by the model.</p>

<p id="_c986217b-23d2-bd22-ca79-d35175af1974">An inference that yields unknown SHALL NOT of itself be a failure, and SHALL NOT prevent evaluation.</p>

<p id="_f26ef3fc-9316-fc65-c281-7de69b50cc54">An inference that yields a result contradicting a type or shape the model states for the same value SHALL be reported under  <xref target="validation-clause" style="short"/>.</p>

<admonition id="_26b9585b-394b-2565-75aa-ecad90d1fa0e" type="important">
<name id="_2ca2e812-5438-bdb8-d45a-ce86c054320d">Editorial note</name>
<p id="_de2d9cfa-c6d3-e540-e4f2-5c669e37bae9">What remains unstated is which operators are required to be inferable at all. Upstream does not require an inference function of every operator, and where one is absent the values downstream of that operator are simply unknown. Under <xref target="inference-obligations" style="short"/> this document requires one of every operator, which is the stronger position and the one a standard should take; the gap between the two is what Annex C records.</p>
</admonition></clause>

<clause id="_70b9f429-5d71-cd7b-ca20-7b1df9cf4f63" obligation="normative">
<title id="_ba30d183-b4f9-3700-a785-df12186cd049">Relationship to validation</title>
<p id="_6a8b92fc-3973-6e06-cdc1-87da4996d11f">Inference results are inputs to the type and shape checks of <xref target="validation-clause" style="short"/>. An inference that returns unknown SHALL NOT by itself cause a validation error.</p>
</clause>
</clause>

<clause id="_5d0b7104-a9ad-6472-31c8-04fdefb98dd9" anchor="validation-clause" obligation="normative">
<title id="_5919f86d-74a2-3820-3aef-6c3e3426c031">Model validation</title>
<clause id="_a03d62af-9f46-0480-cb4e-0ab9b7e970a3" obligation="normative">
<title id="_13cee2c8-e703-9374-b868-b94a872de4f8">General</title>
<p id="_734869a2-8565-0d40-2614-9aa825472f42">Validation determines whether a <xref target="model" style="short"><display-text>model</display-text></xref> satisfies the requirements of this document, without evaluating it.</p>

<p id="_a2d39f27-d4e4-8c44-fc2e-aa1b14d77487">A validating consumer SHALL perform the checks of this clause and SHALL report every condition it classifies as an error.</p>

<admonition id="_2eef14ac-00c8-8ba2-1dc9-c8bce77cffb8" type="important">
<name id="_d43586cb-d5f2-e1c3-fe68-a5f6077f932e">Editorial note</name>
<p id="_6d6eb4d6-3bc7-1a45-b51c-d25086c850df">This clause is new in this structure. The draft previously defined a validating consumer conformance class and then never said what it must detect, which made the class unclaimable. The checks below are the intended shape of the clause; each needs to be stated as a testable condition and given a severity before the committee draft. Upstream’s checker is the obvious source, but its behaviour is implementation rather than specification and diverges from the prose in places.</p>
</admonition></clause>

<clause id="_a666538d-685f-a177-07ad-ad5da87e4f19" obligation="normative">
<title id="_d9854bef-f2e7-f2a6-1b3f-0bf92a6d3763">Structural checks</title>
<p id="_a0190417-b017-359e-c815-fcf47d35ae17">A validating consumer SHALL detect:</p>

<ul id="_c6af21d2-1507-ec14-3864-c1ba3b86dd97"><li><p id="_e1d933cc-d848-6b5f-0dd9-4e04fcbc28cb">a graph that is not acyclic;</p>
</li>
<li><p id="_4f6375ef-9a61-6b8f-c60e-f0793aa357b3">a node that consumes a value with no producer;</p>
</li>
<li><p id="_a3a57062-e36b-33e4-7ba6-fad9cc1e17ce">a value produced more than once within one graph;</p>
</li>
<li><p id="_c4f51197-bd46-7f7f-9cf5-0f7c7e8a3c1c">a name that is empty;</p>
</li>
<li><p id="_13bb2f39-0834-248c-cdf5-4853422bf1d4">a node whose operator is not defined in any declared operator set.</p>
</li>
</ul>
</clause>

<clause id="_33d0c755-062c-d491-dcb6-697fb74b35f7" obligation="normative">
<title id="_eb860b69-9591-5cea-5d22-fde93d42c80e">Type and shape checks</title>
<p id="_f26b2e3b-3137-9205-0606-15d2812100c9">A validating consumer SHALL detect a node whose input types do not satisfy the type constraints of its operator definition.</p>

<admonition id="_94536297-781f-8c9b-2605-ef861f6aed80" type="important">
<name id="_b84f4239-48e0-1e7e-6006-0ff15a4b12b1">Editorial note</name>
<p id="_bdd2669d-b071-1f39-a364-f1c5f168df84">State how far shape checking is obliged to go. Checking every statically known extent is stronger than upstream’s checker performs; requiring nothing makes the check vacuous. The likely answer is that a mismatch between two statically known extents is an error and that unknown extents are not checked, but this must be decided together with  <xref target="inference" style="short"/>.</p>
</admonition></clause>

<clause id="_e67e7848-3209-771b-b7d8-134f7f5f70ae" obligation="normative">
<title id="_4838e336-8c84-25da-dc79-3d393567e0dd">Operator set checks</title>
<p id="_fe366621-136f-f29c-44fb-390b66f4da22">A validating consumer SHALL detect:</p>

<ul id="_854a89ff-95b5-cbe2-94e3-07432ee0d801"><li><p id="_8285e6f4-a958-dc02-95ae-e37ef3565d83">a model that uses a domain it does not declare;</p>
</li>
<li><p id="_cd045967-2ac1-88ce-0e24-e1b2aa279112">a node whose operator is not present in the declared version of its domain;</p>
</li>
<li><p id="_4be9563d-a272-2627-963d-6b927fb171c9">an attribute that is not defined for the operator, or a required attribute that is absent.</p>
</li>
</ul>
</clause>

<clause id="_9f07fd9d-8d5b-14dc-4114-424cc3641b40" obligation="normative">
<title id="_2f1ec2c5-a77e-a883-1d1b-7d7c6d71e885">Severity and reporting</title>
<p id="_ffb69361-9145-9c14-c13c-b43ff0cc3773">Each condition detected SHALL be reported as an error or a warning. An error means the model does not conform to this document. A warning means the model conforms but relies on behaviour this document leaves open.</p>

<p id="_46097441-690f-96e4-3189-4f6db2e87f9d">A validating consumer SHOULD report all conditions it detects, not only the first.</p>
</clause>
</clause>

<clause id="_3badae35-6142-9e27-cdec-5e9ac8dafc03" anchor="numerical" obligation="normative">
<title id="_fb6713e9-74c5-b45b-83c8-12ea58237502">Numerical behaviour</title>
<clause id="_a398acff-e324-0ca2-7b80-aa7171a8a3ad" obligation="normative">
<title id="_77b7a2c9-ae4d-263c-0aa7-58b5dea5ee0e">General</title>
<p id="_58e8642b-d80e-b976-b63d-7f3f88f82e5c">This clause states the numerical obligations on an evaluating consumer. It applies to every operator of  <eref type="inline" bibitemid="onnx-part-2" citeas="ONNX 1-2"/> unless that operator’s definition states otherwise.</p>
</clause>

<clause id="_3cdc2400-73a0-d313-4f76-16b059135db0" obligation="normative">
<title id="_58c605c2-3976-8854-328b-3f2d801ee563">Floating-point arithmetic</title>
<p id="_3e631b23-8881-18bd-5a6e-a5503f8ff110">Arithmetic on the <tt>FLOAT</tt> and <tt>DOUBLE</tt> element types SHALL follow <eref type="inline" bibitemid="ieee754" citeas="IEEE 754-2019"/> for the corresponding binary formats, subject to the reassociation permitted by <xref target="accumulation" style="short"/>.</p>
</clause>

<clause id="_bfde18ef-395e-54f0-cec2-d591e33900d2" obligation="normative">
<title id="_4cfe909a-8053-8600-e2c0-28494f1a8564">Special values</title>
<admonition id="_792d69ec-1336-8c3d-8549-6069736cd4e4" type="important">
<name id="_87fa0afd-8102-0404-dc26-45659fd66197">Editorial note</name>
<p id="_78aeea44-8665-cf4f-664b-fe094cd9913c">State the behaviour for NaN, the infinities and signed zero, per operator category rather than per operator.  <tt>max(NaN, 0)</tt> is not well defined by <eref type="inline" bibitemid="ieee754" citeas="IEEE 754-2019"/> without stating which of <tt>maxNum</tt> or <tt>maximum</tt> is intended, and that choice has to be made once here rather than repeated in every operator definition in  <eref type="inline" bibitemid="onnx-part-2" citeas="ONNX 1-2"/>.</p>
</admonition></clause>

<clause id="_a677b761-b880-6c5e-46d0-2622fcc9333d" anchor="accumulation" obligation="normative">
<title id="_813c6daa-e791-bf77-0036-491de7cd048a">Accumulation and reassociation</title>
<p id="_47264719-5133-e5e0-be0e-5a214317d540">An implementation MAY reassociate and may accumulate in a wider precision than the element type, provided the result remains within the tolerance of <xref target="tolerances" style="short"/>.</p>

<admonition id="_6cebfa3b-85fe-9497-10cd-576780c432a3" type="important">
<name id="_a3de98d1-f9cb-9c9a-e6a7-cfd3fd933d48">Editorial note</name>
<p id="_86366dd5-ee40-fb17-9214-7bc20fe6cc43">Reassociation and the tolerance are two statements of one obligation and must be written together: a tolerance loose enough to permit any accumulation order is too loose to be a conformance criterion, and one tight enough to pin the order forbids ordinary optimizations. State the permitted reassociation, then derive the tolerance from it.</p>
</admonition></clause>

<clause id="_c384119b-fdce-a2be-471f-2a121a1cb3c6" anchor="tolerances" obligation="normative">
<title id="_8fb09034-f8a1-dd7c-8c98-647d33f3c5f1">Tolerances</title>
<p id="_3b741214-2ffc-d851-8c40-a9fd46d94fe7">An evaluating consumer SHALL document the tolerance it achieves for each element type it supports.</p>

<admonition id="_22cb7996-179c-24fd-1ec8-459fb4be939c" type="important">
<name id="_b316981b-824a-e01f-4054-8d15dc1bbd3a">Editorial note</name>
<p id="_25bb87eb-76dc-68d5-5ead-ae4de298614e">State the tolerance model. The reference implementation’s test suite uses relative tolerance 1e-3 and absolute tolerance 1e-7 for float32, but this is a test-harness convention rather than a specified requirement, and it is not stated for float16, bfloat16 or the 8-bit and narrower float types. This clause is the single largest gap between current practice and a testable standard, and it is the clause  <eref type="inline" bibitemid="onnx-part-3" citeas="ONNX 1-3"/> depends on: a test vector without a stated tolerance cannot be passed or failed.</p>
</admonition></clause>

<clause id="_246bba99-79ae-e17f-1c8d-abdbbc253b88" obligation="normative">
<title id="_32e223a1-8ba6-feb5-b6fb-bdad680af424">Non-deterministic operators</title>
<p id="_efec3ec8-107a-0346-786b-87c278d7a450">An operator whose definition in <eref type="inline" bibitemid="onnx-part-2" citeas="ONNX 1-2"/> declares it non-deterministic is exempt from  <xref target="tolerances" style="short"/>. The conformance criterion for such an operator SHALL be stated in its definition.</p>
</clause>
</clause>

<clause id="_aebadc71-0b93-eac8-b418-28179badcf6f" anchor="serialization" obligation="normative">
<title id="_89cf69d7-c7bc-1f88-c399-ded10dd24ffd">Serialization</title>
<clause id="_1512cc7e-2231-2eee-14d1-5614d5d139fc" obligation="normative">
<title id="_5ecf2af2-ed51-64e1-68b1-18421de3dc88">General</title>
<p id="_b6a70f49-1897-e470-0f94-4d03daf083bb">An ONNX <xref target="model" style="short"><display-text>model</display-text></xref> is serialized as a sequence of octets. This clause specifies that sequence: the encoding of each kind of value, the framing of the fields of a message, and the treatment of a field a  <xref target="consumer" style="short"><display-text>consumer</display-text></xref> does not recognize.  <xref target="annex-schema" style="short"/> states the messages and their fields.</p>

<p id="_ac22ee57-ab19-18dd-b534-294dc6492507">The encoding is specified here in full. A <xref target="producer" style="short"><display-text>producer</display-text></xref> or consumer can
be implemented from this document alone, and this document does not require any
other specification in order to be implemented.<note id="_7b17eb18-e2e5-d2d6-0bd4-2f6ff82a8cb8"><p id="_af112717-a69f-4c4e-8a92-cc37c2c2f2da">The encoding defined here is the one a Protocol Buffers implementation produces for the schema from which  <xref target="annex-schema" style="short"/> is derived. Using such an implementation is therefore a convenient way to satisfy this clause, and the way most existing tools do satisfy it, but it is an implementation choice and not a requirement. See  <xref target="protobuf-relationship" style="short"/>.</p>
</note></p>


</clause>

<clause id="_bb946285-ea20-4c3c-92b5-528c03d8263b" anchor="primitive-encodings" obligation="normative">
<title id="_24b5e02a-3670-fc5b-9a7b-87a0c6f2e612">Primitive encodings</title>
<clause id="_8057c452-6e6d-af7a-291c-0b1e8fd32abc" obligation="normative">
<title id="_2a7d24d8-f804-fbff-21f8-c0c4eabf9877">General</title>
<p id="_c496d906-a38d-39a1-d84c-c03f758b7413">Four encodings carry every value. <xref target="tbl-wire-types" style="short"/> names them and gives the wire type of each, which is the number that identifies the encoding in a field key (<xref target="field-framing" style="short"/>).</p>

<table id="_3c02d36e-b5f9-1506-20ae-7f3640d4db09" anchor="tbl-wire-types"><colgroup><col width="14.2857%"/><col width="28.5714%"/><col width="57.1429%"/></colgroup>
<name id="_18b663a1-5921-b972-2b7f-3ba4ba383120">Primitive encodings and their wire types</name>
<thead><tr id="_708b2031-3a9e-0f50-8a65-d8538a928336"><th id="_d4e51437-8631-23ab-eeff-3e67e9404bc9" valign="top" align="left">Wire type</th>
<th id="_7f64a684-7cc8-6971-e989-53b4e4d3d6f5" valign="top" align="left">Encoding</th>
<th id="_6a0e30d5-6051-f8fc-77ad-798aa9d87aa7" valign="top" align="left">Used for</th>
</tr></thead>
<tbody><tr id="_1fa584d4-6c85-f84e-966d-9ff960104d38"><td id="_65692e69-5a05-2cf7-d609-bb7f59dae98d" valign="top" align="left">0</td>
<td id="_29f6f5d3-938f-530e-23dc-8a10d3fdd5d1" valign="top" align="left">variable-length integer</td>
<td id="_9c4dd42b-37b0-7512-9efc-9bf87443d41a" valign="top" align="left"><tt>int32</tt>, <tt>int64</tt>, <tt>uint64</tt>, <tt>bool</tt>, enumerations</td>
</tr><tr id="_dbe48840-81c0-4471-a635-af2200dff0c2"><td id="_074d9b41-a51a-ccfd-d631-301e71672de9" valign="top" align="left">1</td>
<td id="_112646ef-5515-0be0-df2a-38403c554827" valign="top" align="left">64-bit</td>
<td id="_2ac69ce9-cee1-ec1e-a069-59a83d0ac50b" valign="top" align="left"><tt>double</tt></td>
</tr><tr id="_a84b44cb-c088-66a0-7654-778a9e4beb43"><td id="_edda00d8-944c-30d8-db8c-2e479b2ac025" valign="top" align="left">2</td>
<td id="_7825ba19-2c2a-65cc-92d3-7418fd0d384f" valign="top" align="left">length-delimited</td>
<td id="_3f180104-b7b4-ecf0-24a7-6bea1c787b86" valign="top" align="left"><tt>string</tt>, <tt>bytes</tt>, embedded messages, packed repeated fields</td>
</tr><tr id="_3dcb1427-1d64-6b8d-df9f-ed1dce639cd0"><td id="_28d41a52-f203-84c5-b287-ccf553d9f025" valign="top" align="left">5</td>
<td id="_1ed64446-a6e4-8a3d-4b3a-8ffd3353471d" valign="top" align="left">32-bit</td>
<td id="_66847bf8-c792-8e49-ec49-f8a8f0a19395" valign="top" align="left"><tt>float</tt></td>
</tr></tbody>
</table>

<p id="_6a551266-b4b5-8f00-5be2-44320a7fba6b">The wire types 3 and 4 SHALL NOT appear. A consumer that encounters one SHALL
reject the model.<note id="_d9821e77-0187-591b-c6b1-bf7362126835"><p id="_a551a9f7-f9b4-6370-4bd8-778aacb8e286">Wire types 3 and 4 delimit a construct the format no longer uses. They are excluded so that a consumer can skip an unrecognized field by its wire type alone, which  <xref target="unknown-fields" style="short"/> requires.</p>
</note></p>


</clause>

<clause id="_eaa249e4-6b1d-8cfd-6b48-0ed4e2810224" anchor="varint" obligation="normative">
<title id="_a619cbc4-2c1c-1f09-d049-255ab8816510">Variable-length integer</title>
<p id="_6fc174ca-cff8-c2e8-68bd-2cc455f78e2a">A variable-length integer encodes a non-negative integer as a sequence of octets. The integer is divided into groups of seven bits, least significant group first. Each group occupies the seven low-order bits of one octet. The high-order bit of an octet is 1 where a further octet follows and 0 in the last octet.</p>

<p id="_51f0573f-618b-3b57-75c5-f02d52cc0ce8">The value encoded is at most <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <msup>
      <mn>2</mn>
      <mn>64</mn>
    </msup>
    <mo>−</mo>
    <mn>1</mn>
  </mstyle>
</math><asciimath>2^64 - 1</asciimath></stem>, so the sequence is at most ten octets. A consumer SHALL reject a sequence of more than ten octets.</p>

<example id="_6d1995bd-6547-fe51-f986-639dee6a0b1e">
<name id="_ab4d7d37-ff0f-d8f1-f1a2-fc5fa096c175">Variable-length integers</name>
<p id="_4396b158-ea21-b996-b646-cd468b487d4c">1 is <tt>01</tt>. 300 is <tt>ac 02</tt>: the groups are <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mn>300</mn>
    <mo>=</mo>
    <mn>44</mn>
    <mo>+</mo>
    <mn>2</mn>
    <mo>⋅</mo>
    <mn>128</mn>
  </mstyle>
</math><asciimath>300 = 44 + 2 * 128</asciimath></stem>, the first octet carries 44 with the continuation bit set, the second carries 2.</p>
</example>
</clause>

<clause id="_c5276eb8-326e-5777-9d0a-ed415e73a553" anchor="signed-integers" obligation="normative">
<title id="_5d0f21e6-8572-baf7-d137-23fba4ef0f5d">Signed integers</title>
<p id="_5fad7055-d7e8-f457-e3b1-a7770b523c99">A value of a signed integer type is encoded as the variable-length integer of its representation as a 64-bit two’s complement integer.</p>

<p id="_1967394b-7e1e-c272-ae79-c4ed8e8b61d2">A negative value therefore occupies ten octets, whatever its magnitude and whether its type is  <tt>int32</tt> or <tt>int64</tt>.</p>

<example id="_d4a8905d-d6d9-316f-e1a5-6952c0bfddf7">
<name id="_6a7d9f99-888d-7090-61b1-19ba0378d239">A negative integer</name>
<p id="_8fa010be-c5f7-63f3-8eb4-ecefaa35ba41">-1 is <tt>ff ff ff ff ff ff ff ff ff 01</tt>, being the encoding of
<stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <msup>
      <mn>2</mn>
      <mn>64</mn>
    </msup>
    <mo>−</mo>
    <mn>1</mn>
  </mstyle>
</math><asciimath>2^64 - 1</asciimath></stem>.</p>
</example>

<p id="_58c837ce-c1c4-133e-fd51-0bbc0aaa31a9">A consumer reading a field of type <tt>int32</tt> SHALL reject a value outside the range of a 32-bit two’s complement integer.</p>
</clause>

<clause id="_db62158e-7659-6cac-99a1-ecfa8dac5d33" obligation="normative">
<title id="_6df5182e-62fe-0731-d4d3-d4c58d178054">Fixed-width values</title>
<p id="_548ce29d-9959-118c-f776-70fbbe207020">A 32-bit value is four octets, least significant octet first. A value of type <tt>float</tt> is the binary32 representation of <eref type="inline" bibitemid="ieee754" citeas="IEEE 754-2019"/> in that order.</p>

<p id="_956c0254-c6a1-1a9b-f483-b539a2d5802c">A 64-bit value is eight octets, least significant octet first. A value of type <tt>double</tt> is the binary64 representation of <eref type="inline" bibitemid="ieee754" citeas="IEEE 754-2019"/> in that order.</p>

<p id="_c945e3c4-5cff-82e6-8807-35833072fb50">The octets are those of the representation, so a signalling NaN, a quiet NaN and a negative zero are each preserved exactly.</p>
</clause>

<clause id="_9d726935-54b3-550a-836d-47f787e9ef15" anchor="length-delimited" obligation="normative">
<title id="_f352713d-cba9-7f4e-496c-738e31070f71">Length-delimited values</title>
<p id="_25c0f4c6-6beb-3905-da08-15e37e2c2743">A length-delimited value is a variable-length integer giving a length in octets, followed by that many octets.</p>

<p id="_56f71f7e-30c0-c311-e99f-9c35a90b2f5b">The octets are:</p>

<ul id="_53a099f2-3af7-cbbc-8533-7c151a2efade"><li><p id="_11ba9299-a049-0533-d24b-b35e94a47ec7">for <tt>string</tt>, the UTF-8 encoding of the character sequence, as specified in <eref type="inline" bibitemid="iso10646" citeas="ISO/IEC 10646"/>, without a byte order mark;</p>
</li>
<li><p id="_1313d46d-d3af-711d-709e-23ebe904c4c1">for <tt>bytes</tt>, the octets themselves;</p>
</li>
<li><p id="_64e025e3-0b78-d14d-a832-f031d1f18412">for an embedded message, the encoding of that message under this clause;</p>
</li>
<li><p id="_76266479-d2da-e2ca-120b-04c500002430">for a packed repeated field, the encodings of its elements, in order, each without a field key (<xref target="repeated-fields" style="short"/>).</p>
</li>
</ul>

<p id="_56d91e82-3146-f286-0e7f-eff3121195ce">A consumer SHALL reject a length that extends beyond the end of the enclosing message.</p>
</clause>
</clause>

<clause id="_66b0138f-01c9-56c0-c767-84ec5c6c0c69" anchor="field-framing" obligation="normative">
<title id="_931c35f8-0359-c27a-1ed3-c0f09a8cc5b9">Fields</title>
<clause id="_520f7142-ac11-d655-4dfd-4c08ce0c3f41" anchor="field-key" obligation="normative">
<title id="_47a38d16-9f63-64cd-a99e-c5b34adad1cf">Field key</title>
<p id="_4198e121-c900-91c7-e832-c151467d2ed4">Each field is preceded by a field key, which is the variable-length integer of</p>

<formula id="_976af3a8-7b37-eb57-598c-f8e351e5dd6d"><stem block="true" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="true">
    <mrow>
      <mo>(</mo>
      <mi>t</mi>
      <mo>×</mo>
      <mn>8</mn>
      <mo>)</mo>
    </mrow>
    <mo>+</mo>
    <mi>w</mi>
  </mstyle>
</math><asciimath>(t xx 8) + w</asciimath></stem></formula>

<p id="_5d10c302-d947-600d-adc3-eddb83a9ab96">where <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mi>t</mi>
  </mstyle>
</math><asciimath>t</asciimath></stem> is the tag of the field, as given in <xref target="annex-schema" style="short"/>, and
<stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mi>w</mi>
  </mstyle>
</math><asciimath>w</asciimath></stem> is its wire type, from <xref target="tbl-wire-types" style="short"/>.</p>

<p id="_0fec9538-bf86-b8df-6ad5-aa09bd3eb743">A tag is at least 1. A field whose tag is at most 15 therefore has a key of one octet, and one whose tag is at least 16 has a key of two or more.</p>

<example id="_19a5ecf0-4042-616b-ac05-03cc21e2ee1b">
<name id="_408a57b8-ad7e-5b69-db9c-de2aa254d743">Field keys</name>
<p id="_6d54d597-8d0d-be4b-3f63-f75d7d267aef">The field of tag 1 and wire type 0 has the key <tt>08</tt>. The field of tag 20 and wire type 0 has the key  <tt>a0 01</tt>.</p>
</example>
</clause>

<clause id="_faa1a31d-4881-f928-3367-65c9d502bf7e" obligation="normative">
<title id="_3d0bc04e-579c-d4c8-9fac-5e7fab662121">Order and repetition of fields</title>
<p id="_d4bc02de-e881-a205-58df-5b60b296c3bf">The fields of a message MAY appear in any order. A producer SHOULD write them in order of increasing tag.</p>

<p id="_af791450-03e2-a24d-644a-417051f17db6">Where a field that is not repeated appears more than once, the value is that of the last occurrence, save that occurrences of an embedded message field are merged, field by field, under this same rule.</p>
</clause>

<clause id="_eb1838af-2dd9-7898-9ea4-67cd12f47329" anchor="repeated-fields" obligation="normative">
<title id="_b318e970-e5b4-7f86-9557-22139fc793b7">Repeated fields</title>
<p id="_8e3b5401-59e9-f1b2-91ef-e1363ae79958">A repeated field is encoded in one of two forms.</p>

<p id="_2ecebc44-657d-37eb-f7ba-17d33aa97d85">In the packed form, the field appears once, with wire type 2, and its length-delimited value holds the encodings of the elements in order, each without a field key. Only a repeated field whose elements are of a type with wire type 0, 1 or 5 may take this form.</p>

<p id="_17d6d119-eab8-6bce-3c02-b5837be79263">In the unpacked form, the field key and value appear once per element, in order.</p>

<p id="_db284a97-ee4a-7737-0d37-b7fcc191f0c7">A producer SHOULD write a repeated field in the form <xref target="annex-schema" style="short"/> records for it.</p>

<p id="_4cbda9bd-fb8a-4a82-86c8-15caf9a2da36">A consumer SHALL accept both forms for any repeated field, and SHALL accept a field that appears in both forms in one message, concatenating the elements in order of appearance.</p>

<example id="_935fd0cd-9c68-b107-3676-ff3b6cd10ed8">
<name id="_2900caf8-4eb3-88b2-6015-58a36a99e6c1">The two forms</name>
<p id="_281f384c-0f42-b72d-c3ea-79780a10eb41">A repeated <tt>int64</tt> field of tag 5 holding 1 and 300 is <tt>2a 03 01 ac 02</tt> packed, and  <tt>28 01 28 ac 02</tt> unpacked.</p>
</example>
</clause>
</clause>

<clause id="_661f9269-18cc-b0d2-5e3b-e4ae682d4742" anchor="unknown-fields" obligation="normative">
<title id="_e01fd283-eaff-124a-7115-ccc9f9482f6b">Unrecognized fields</title>
<p id="_8a35e07c-a549-7c74-db18-f3ed6c83c2b6">A consumer that encounters a field whose tag it does not recognize SHALL skip it and SHALL continue reading the message. The length to skip is determined by the wire type in the field key alone:</p>

<ul id="_28674d99-d014-dd64-c935-27e7b9e63f21"><li><p id="_c033be08-b537-da5e-4cf4-a0c4c81d4c8b">wire type 0: read the variable-length integer and discard it;</p>
</li>
<li><p id="_1bb6ecff-f710-fe0b-c78d-e3451b15fc1b">wire type 1: skip eight octets;</p>
</li>
<li><p id="_75a62577-53b9-73ae-f57b-4d1b4781185c">wire type 5: skip four octets;</p>
</li>
<li><p id="_1a68a019-6899-0e0a-b760-c8168142960f">wire type 2: read the length and skip that many octets.</p>
</li>
</ul>

<p id="_73ba6369-760f-4681-34ce-2633cb0fee1a">A consumer SHALL NOT reject a model for carrying a field it does not
recognize.<note id="_905b5bda-b5ad-56bb-7ece-cf7d95d28535"><p id="_4aa9ebf5-4304-0739-5598-cd56774b489e">This is what allows a model written against a later IR version to be read by a consumer written against an earlier one, so far as the fields they have in common allow.  <xref target="versioning" style="short"/> states when that is enough for the model to be evaluated.</p>
</note></p>



<p id="_f01765bc-a198-2401-70d6-0c489ec7d8c6">A consumer MAY retain the octets of a field it does not recognize. A consumer that rewrites a model and does not retain them SHALL NOT represent the result as the same model.</p>
</clause>

<clause id="_5789fa2d-2166-7985-9da0-17b17ed1b100" obligation="normative">
<title id="_e11679d7-9bc4-697d-c4f0-4a68e01c64b9">Limits</title>
<p id="_9bb09e5b-d035-6951-06ba-e0c945004e01">A consumer MAY impose a maximum size on a message and on the model as a whole. A consumer that does so SHALL document the limit and SHALL report a model exceeding it under  <xref target="validation-clause" style="short"/>; see <xref target="resource-bounds" style="short"/>.</p>

<admonition id="_38bd1748-f9de-43a4-0250-df3a1b23e417" type="important">
<name id="_1543ba48-93cf-1e45-2c93-83a423433178">Editorial note</name>
<p id="_14dc7ad8-5319-8153-ad72-8ceecf362861">No maximum is stated here. The reference implementation applies one of 2 gigabytes to a single message, which is also the point beyond which a length does not fit the field it is read into in some implementations, and the external data mechanism of  <xref target="external-data" style="short"/> exists so that a model can exceed it. State whether this document fixes that maximum or leaves it implementation-defined; if it is fixed,  <xref target="annex-schema" style="short"/> has to say which messages it applies to.</p>
</admonition></clause>

<clause id="_d754b18e-d7e1-72c7-126a-037d90179662" obligation="normative">
<title id="_d924613a-543a-d53a-217b-a98be7109aa8">Message definitions</title>
<p id="_851635ae-8769-5771-8cbb-b9d985a41b6d">The messages, their fields, and for each field its tag, wire type and obligation are given normatively in  <xref target="annex-schema" style="short"/>.</p>

<p id="_155a4a3a-89b8-0ac2-b548-00dc3a2d9ceb">A tag identifies a field within its message. A tag SHALL NOT be reused for a
different field, and a tag recorded as reserved SHALL NOT be used at all.<note id="_d444e37e-a5d9-5065-9252-84b36f9aa889"><p id="_69b6f4bf-7e0e-ad7c-c4dc-2c98bc28b67a">The obligation is what a schema cannot express, and is the reason <xref target="annex-schema" style="short"/> is a table rather than a schema. In the schema this standard was derived from, every field is syntactically optional.</p>
</note></p>


</clause>

<clause id="_3199e282-2311-dd40-096a-32a1071f463f" anchor="protobuf-relationship" obligation="normative">
<title id="_c2bb2c69-d227-c455-1f0c-9b331c98b46b">Relationship to Protocol Buffers</title>
<p id="_f630d847-ac32-01ea-bef2-a97dae554082">The encoding of <xref target="primitive-encodings" style="short"/> to <xref target="unknown-fields" style="short"/> is that of Protocol Buffers, restricted to the constructs  <xref target="annex-schema" style="short"/> uses. An implementation MAY therefore be built on a Protocol Buffers library, by compiling a schema whose messages, fields, tags and types are those of <xref target="annex-schema" style="short"/>.</p>

<p id="_11f6af65-bda3-d952-9aad-710df5c32a44">This document does not require that, and does not depend on any specification
of Protocol Buffers. Where the two differ, this document governs a model
claimed to conform to it.<note id="_984a0077-7223-5343-1de2-bf46de04f012"><p id="_61d5edba-3e77-9078-17fc-8493cc975032">The restriction is substantial and is what makes the encoding short enough to state here. Groups are excluded; no field uses a zig-zag encoded or fixed-width integer type; and the schema uses seven scalar types in all.</p>
</note></p>


</clause>

<clause id="_6d39aa8f-0119-79fe-360e-8b00b05fa5dd" anchor="canonical-form" obligation="normative">
<title id="_d855fed6-eff1-a47e-7f91-c881e78d8301">Canonical form</title>
<admonition id="_3e551b06-e935-544a-5778-30f97baff4f7" type="important">
<name id="_9b3af2ba-9622-6426-71d7-738b40635117">Editorial note</name>
<p id="_bbb26331-355e-428e-ea2c-bb8cf6b7c6c4">Decide whether this document defines a canonical serialization. This clause admits encodings that differ octet for octet while carrying the same content: fields may appear in any order, a repeated field may be packed or not, and a signed value may be written in fewer octets than ten only where it is non-negative. A canonical form is a prerequisite for signing and for reproducible model hashes, both of which have been requested by adopters.</p>
</admonition></clause>
</clause>

<clause id="_995965a5-30db-9774-fac8-af9dc2cb550f" anchor="external-data" obligation="normative">
<title id="_0e69948a-e39a-dfe1-e961-19772d98b668">External data</title>
<clause id="_4fdeb854-f8af-1c97-ccb8-4af524fbacb6" obligation="normative">
<title id="_510dfe68-ccc0-083d-47f6-bcc43b374f03">General</title>
<p id="_8b489d2d-64f8-e1df-aa6c-36e29de4e8ff">The contents of a tensor MAY be stored outside the model file. A tensor SHALL declare, as its data location, either that its contents are carried in the model file or that they are external.</p>

<p id="_0203b16f-468f-b63f-c28e-b892217f4289">A tensor whose data location is external SHALL NOT also carry its contents in the model file. Where no data location is declared, the contents are carried in the model file.</p>

<p id="_ffc205a9-ec2d-6c9d-d119-8afabaa9a285">The octets of external contents have the same layout as the raw contents of a tensor carried in the model file.</p>

<p id="_2e5c6446-7958-cd43-e89d-c422ae4d5994">One external file MAY hold the contents of more than one tensor.</p>
</clause>

<clause id="_d876eb87-50cd-f50f-2c66-272985faac99" anchor="external-reference" obligation="normative">
<title id="_1c1cdd1e-6120-7f38-1f97-7482b8516b80">Reference resolution</title>
<p id="_7996aca2-7032-c1c9-d4c3-d673cc8c5d10">An external reference is a set of key-value pairs. <xref target="tbl-external-data" style="short"/> states the keys this document defines and the obligation on each. A consumer SHALL reject a reference carrying a key not listed.</p>

<table id="_01319a6e-0a85-6b84-2b56-61afc123e056" anchor="tbl-external-data"><colgroup><col width="16.6666%"/><col width="16.6666%"/><col width="66.6668%"/></colgroup>
<name id="_8ae4ce6e-aea9-d214-daaa-47da2a83b6d0">Keys of an external data reference</name>
<thead><tr id="_8c00e38c-b98c-d677-e340-00a561146802"><th id="_6b09e30b-b1d5-2cce-d16b-cf7e18991a06" valign="top" align="left">Key</th>
<th id="_31143af9-d728-ad4f-ec9a-d5264d774291" valign="top" align="left">Obligation</th>
<th id="_aaaf8522-763d-7712-f841-31b99cc83beb" valign="top" align="left">Value</th>
</tr></thead>
<tbody><tr id="_8fd1aba1-a165-aa1f-f918-62f329aec79b"><td id="_e2f92649-ad8a-102d-2f22-9d5e79b784ea" valign="top" align="left"><tt>location</tt></td>
<td id="_f0fc98f9-ee15-9d28-97e6-a972d9d7671d" valign="top" align="left">mandatory</td>
<td id="_87b9ce75-c528-fc97-839e-220e580e1f64" valign="top" align="left">The path of the file holding the contents, relative to the directory holding   the model file.</td>
</tr><tr id="_94b7f4a3-03a2-7b23-0a86-93c401676a34"><td id="_9761b404-8e70-7972-07a5-50b31a203d68" valign="top" align="left"><tt>offset</tt></td>
<td id="_9d554a99-a6d1-db47-c3f8-c063c864359f" valign="top" align="left">optional</td>
<td id="_486cca9c-a58d-e950-0d5e-7e59d736d114" valign="top" align="left">The position, in octets, at which the contents begin in that file. Where   absent, the contents begin at the start of the file.</td>
</tr><tr id="_5358b643-1f24-e28f-db89-d83b2312f337"><td id="_b9fe4fa7-ee92-ab45-d345-a418e4386a07" valign="top" align="left"><tt>length</tt></td>
<td id="_48460d56-0b95-2ef6-a652-0dd6e677bd89" valign="top" align="left">optional</td>
<td id="_a5e71607-5e72-da3f-921a-b2c496c179aa" valign="top" align="left">The number of octets of contents. Where absent, the contents extend to the   end of the file.</td>
</tr><tr id="_9686b92a-34a4-6acf-ffc6-fe43691574c7"><td id="_a6017402-6f4a-a05b-fa7c-45f4ea70b7ef" valign="top" align="left"><tt>checksum</tt></td>
<td id="_be96eeec-11d0-2c1f-8103-39dd6463d0ef" valign="top" align="left">optional</td>
<td id="_8ab0bc0e-ef81-08cf-22b0-1102966399da" valign="top" align="left">A digest of the file named by <tt>location</tt>; see <xref target="external-integrity" style="short"/>.</td>
</tr></tbody>
</table>

<p id="_7eb9ca46-0e49-e554-e5c9-4e55793d7185">The value of <tt>location</tt> SHALL be a relative path, and SHALL NOT contain a parent-directory component. A consumer SHALL reject a reference whose <tt>location</tt> is an absolute path, contains a parent-directory component, or resolves outside the directory holding the model file. See  <xref target="security" style="short"/> for the resolution rules a consumer applies in order to establish that.</p>

<p id="_efb96771-a8ab-622e-2ec7-2c3345fc0977">A consumer that cannot resolve a reference, or that resolves it to a file
shorter than <tt>offset</tt> plus <tt>length</tt> requires, SHALL report the failure under
<xref target="validation-clause" style="short"/> and SHALL NOT evaluate the model.<note id="_472662d5-1d40-c3f1-254b-49e66c85166b"><p id="_f9170cae-7942-41fc-a988-80e4488f8824">A consumer may record the directory from which it loaded the model alongside the reference, so that resolution does not depend on the working directory at the time of evaluation. That record is not part of the model, and a producer does not write it.</p>
</note></p>



<p id="_aeecff79-24a3-38d9-2262-049c6ae9138e">A producer SHOULD align <tt>offset</tt> to a multiple of the page size of the target platform, so that a consumer can map the file into memory rather than copying it.</p>
</clause>

<clause id="_87032df3-ca43-f11c-9207-09fb83f152d2" anchor="external-integrity" obligation="normative">
<title id="_0d017fac-f90b-47b1-5856-fefec6f60f0c">Integrity</title>
<p id="_5f0046c2-08d3-b34e-6166-44a8a58c5a09">A reference MAY carry a <tt>checksum</tt>, being the SHA-1 digest of the file named by its  <tt>location</tt>.</p>

<p id="_560f159b-ad78-9c7b-1450-5a215f6f59f5">Where a checksum is present, a consumer SHALL verify it before using the contents, and SHALL reject the model where it does not match.</p>

<admonition id="_51cb2dd7-3ada-98e0-31eb-e17dd8d42251" type="important">
<name id="_66657f6e-222a-3880-82a0-7f10ad22debf">Editorial note</name>
<p id="_f2ba6206-813c-cc38-f549-84bd228d4433">Two questions remain. SHA-1 is the digest the upstream format specifies, and it is no longer fit for the integrity of data from an untrusted source; this document should permit a stronger digest and state how the choice is encoded. And the checksum covers the whole file rather than the octets the reference selects, so it does not bind a tensor to its contents where one file holds several tensors. Until both are settled, external contents can change the meaning of a model that is otherwise byte-identical, which is the gap Annex C records.</p>
</admonition></clause>
</clause>

<clause id="_214df4c4-8ea1-ef04-746c-3351b610cbaa" anchor="versioning" obligation="normative">
<title id="_75512ba3-c30e-8559-03a6-5c61b0ec4159">Versioning and compatibility</title>
<clause id="_c7481cb2-7c8d-2728-263c-7d776f743354" obligation="normative">
<title id="_50e3f29e-2728-20a6-140c-72aea20a72cf">Version axes</title>
<clause id="_bd2e1495-16c6-a53c-25c2-600e46da5dcd" obligation="normative">
<title id="_4bcc4e89-65f7-4088-1d30-680b7db057a9">General</title>
<p id="_bebeb63a-bff8-c6fd-5cc0-2f61bcb343e9">ONNX has three independent version axes:</p>

<dl id="_52dfe15a-a2eb-4bca-31a0-39d754800640"><dt>IR version</dt>
<dd id="_ffa7dd50-111f-e7f0-3071-f0526a2f4377"><p id="_34f57c86-3750-04ec-55a8-fdcf01dc5e3e">the version of the structural and serialization rules given in <xref target="information-model" style="short"/>, <xref target="graph-structure" style="short"/> and <xref target="serialization" style="short"/>.</p>
</dd>
<dt>Operator set version</dt>
<dd id="_6319234e-8313-ef92-c449-ef355b6b9296"><p id="_461c58ff-1173-35a6-c997-ce5709a6e80a">the version of an <xref target="operator-set" style="short"><display-text>operator set</display-text></xref>, per <xref target="domain" style="short"><display-text>domain</display-text></xref>, as published in  <eref type="inline" bibitemid="onnx-part-2" citeas="ONNX 1-2"/>.</p>
</dd>
<dt>Model version</dt>
<dd id="_f190af34-b875-e7ea-d475-6027e07960c2"><p id="_829bce3f-23d3-2f36-0947-02b8fad3dfa8">an identifier assigned by the <xref target="producer" style="short"><display-text>producer</display-text></xref>, opaque to this document.</p>
</dd>
</dl>
</clause>

<clause id="_b2a13514-13ab-b152-568a-4b8eb0e1f0e2" anchor="ir-version-specified" obligation="normative">
<title id="_64215878-d836-4b0a-eb44-b140690ad54b">The IR version this edition specifies</title>
<p id="_00578c73-ceb1-f17b-30db-05cf69b7d133">This edition specifies IR version 14, as published in ONNX release 1.23.0.</p>

<p id="_bd7e9cdb-7dc2-40d7-c977-40d0dec8c435"><xref target="tbl-ir-versions" style="short"/> is the version history.</p>

<table id="_4156a64b-5cf3-f884-1574-a7b649092021" anchor="tbl-ir-versions"><colgroup><col width="16.6666%"/><col width="16.6666%"/><col width="66.6668%"/></colgroup>
<name id="_dfa84537-2f5d-5dfe-9884-f144181b53d5">IR versions, the release each was published in, and what each introduced</name>
<thead><tr id="_50807bb1-248d-1fa0-4f04-81ae3e76d98c"><th id="_0c036779-7aac-b1ce-aab3-f90429015893" valign="top" align="left">IR version</th>
<th id="_c1b236c3-da6e-4cb0-62fe-ea07314e5779" valign="top" align="left">ONNX release</th>
<th id="_58c557f4-281c-5cdd-0fd6-2ec4ae413c7a" valign="top" align="left">Introduced</th>
</tr></thead>
<tbody><tr id="_1fb3d4c6-4802-e1ac-c171-889a59f82db6"><td id="_94f9a22a-70cc-687a-cf58-9d1f30c2971c" valign="top" align="left">8</td>
<td id="_b1b51767-2e10-ecd2-c6ff-28fd635238db" valign="top" align="left">1.10.0</td>
<td id="_d25454d1-9d4a-5a43-5fe6-162e181a50d0" valign="top" align="left">the sparse tensor and optional types; model-local functions</td>
</tr><tr id="_4cd715fd-c434-ae8a-faab-7e05b61d5d57"><td id="_9c007adf-40ba-39b4-aa6e-89c24cf12556" valign="top" align="left">9</td>
<td id="_cc27f90f-4ef8-6413-b640-37ac708f858f" valign="top" align="left">1.14.0</td>
<td id="_8a20011e-331e-2cc8-2665-a47d06a0a5cf" valign="top" align="left">attribute default values in a function; the four FP8 types</td>
</tr><tr id="_71d666df-095b-109e-510a-22e2281f17d2"><td id="_ada51c58-a62f-ee06-c1e7-a877a2f6f0cb" valign="top" align="left">10</td>
<td id="_02dfe71e-64c6-97b1-e30b-54f4231e02a6" valign="top" align="left">1.16.0</td>
<td id="_46ed9280-267b-7938-a289-9215060264d4" valign="top" align="left"><tt>UINT4</tt> and <tt>INT4</tt>; the function overload; metadata properties</td>
</tr><tr id="_092cbf8a-344f-eeb5-9337-c427b17d4d3e"><td id="_cbf15851-349f-e45a-ff2d-9debb75f937c" valign="top" align="left">11</td>
<td id="_bfc8724c-d57c-afb0-77ed-3fc3837279d3" valign="top" align="left">1.18.0</td>
<td id="_6707e594-d57e-9022-e224-860b774a8d2f" valign="top" align="left"><tt>FLOAT4E2M1</tt>; multi-device configuration</td>
</tr><tr id="_8cc3a5f8-4a23-0e11-91ff-293545c35290"><td id="_6e58ee51-867a-a0da-0d0a-172b25de6eca" valign="top" align="left">12</td>
<td id="_54b2c811-2be4-597d-943b-4dcf96864ad2" valign="top" align="left">1.19.0</td>
<td id="_3049b2ae-1a3d-a67a-83ef-d104bbd66ac4" valign="top" align="left"><tt>FLOAT8E8M0</tt></td>
</tr><tr id="_566c6988-0dbe-91b6-0c11-0daf766dcc11"><td id="_52c39a35-6031-44f3-9408-7cc1320375b8" valign="top" align="left">13</td>
<td id="_45e0b406-d544-45bf-de66-9a326c842d18" valign="top" align="left">1.20.0</td>
<td id="_68c87877-200c-0c08-2ccd-2b6c08c27edd" valign="top" align="left"><tt>UINT2</tt> and <tt>INT2</tt></td>
</tr><tr id="_b64dbc22-5349-86e2-2891-1df624a4f8e9"><td id="_ab1734cd-e3ef-311e-8482-350096c18b89" valign="top" align="left">14</td>
<td id="_69dd2915-8cec-3774-698f-0ffbbbc0d93b" valign="top" align="left">1.23.0</td>
<td id="_36a1c3ad-fcdd-9143-a21e-55fb652c8531" valign="top" align="left"><tt>FLOAT6E2M3</tt> and <tt>FLOAT6E3M2</tt>; the opaque type outside the ONNX-ML build</td>
</tr></tbody>
<note id="_aab60766-11d8-897c-2d95-d47c056705cd"><p id="_dbf8e2b1-8b72-e14a-ef2c-ad64f13bbd3d">The release is the publication event. The schema source carries a publication date against each IR version as well, and for IR version 14 it still reads “TBD” although 1.23.0 shipped it; the date in the schema is not maintained and is not relied on here.</p>
</note></table>


</clause>
</clause>

<clause id="_7a9d4baf-6c82-1066-1991-77b869bc1956" obligation="normative">
<title id="_6065b611-a8e5-eb75-8f80-1fc2c846bfa2">IR version evolution</title>
<p id="_77564da7-780f-7c66-4124-0df3f895ab19">The IR version is a positive integer that increases monotonically.</p>

<p id="_09792cb8-a9fa-8b6d-d4a4-428585337524">A change that alters the structure or the meaning of a model, or that breaks a
producer or consumer written against the previous version, SHALL increment the
IR version. A change that does neither SHALL NOT.<note id="_5034043c-06e5-7f42-11aa-d3bf9d1df154"><p id="_303e747a-145c-1636-09ac-e3f2866c9b27">A change can break a producer or consumer without altering a single octet of any model — renaming a field of the serialized form is the standard example. Such a change increments the IR version.</p>
</note></p>



<p id="_238546fb-99d3-d29f-f1e3-7a5f200b1d6e">A consumer SHOULD accept a model that omits a field the consumer does not require. A field that a given IR version requires SHALL be identified as such in  <xref target="annex-schema" style="short"/>, and a producer SHALL supply every such field.</p>

<p id="_6c0b7abc-748c-e6bd-fa77-945405eeff39">An increment of the IR version SHALL NOT of itself change any operator set. An
increment of an operator set version SHALL NOT of itself change the IR version.<note id="_838f5c83-ed49-5eb9-d898-ee4779779d88"><p id="_d976f26e-a8d5-d105-500f-dd110531c7af">The independence stated above is why this standard is in parts. The IR version is the cadence of this part; the operator set versions are the cadence of  <eref type="inline" bibitemid="onnx-part-2" citeas="ONNX 1-2"/>.</p>
</note></p>


</clause>

<clause id="_06e905dc-c3b9-8ed7-49b1-bbbefc07b78f" anchor="operator-set-evolution" obligation="normative">
<title id="_de053594-7f40-0432-c457-5947647a5a52">Operator set evolution</title>
<p id="_b9a5af75-39b0-66e0-bdde-5f93bc574579">An operator set version SHALL NOT be changed once published.</p>

<p id="_d86b3382-facb-5320-4154-d5c678e421be">An operator is identified by a triple of a <xref target="domain" style="short"><display-text>domain</display-text></xref>, a name and the operator set version at which that definition of it was introduced. Where the definition of an operator changes, the changed definition is a new operator with a new such version, and the previous definition remains what it was.</p>

<p id="_e4fe1d07-e7c3-7b49-3e23-03fd781bc210">Where the inventory of an operator set changes, whether by addition, by removal or by a change to the definition of an operator it contains, a new operator set version SHALL be published.</p>

<p id="_3429f2f9-1088-79ce-b50f-d1c45db8bfff"><xref target="tbl-breaking" style="short"/> states the changes to an operator that require a new version of it.</p>

<table id="_29752bcd-a12c-9ae0-bd6b-7199705f85c5" anchor="tbl-breaking"><colgroup><col width="80%"/><col width="20%"/></colgroup>
<name id="_baa0e8b6-b50c-d1d4-cdb9-fffc36c3a002">Changes requiring a new version of an operator</name>
<thead><tr id="_bc089e64-3483-e177-1ab9-1ce6caac52d3"><th id="_a69196fb-270c-e97f-bffc-4ea7cc9ac2e1" valign="top" align="left">Change</th>
<th id="_48683546-d882-ac13-b336-8fdeca2dc618" valign="top" align="left">New version required</th>
</tr></thead>
<tbody><tr id="_be7010f3-3e05-1ba7-6303-59f100135f25"><td id="_cd607dd7-2879-7dc1-2656-50e9f4c3d34b" valign="top" align="left">Adding, removing or renaming an attribute, including adding an optional   attribute whose default value reproduces the previous behaviour</td>
<td id="_20241049-03e7-0a82-0396-8c513994c7a4" valign="top" align="left">yes</td>
</tr><tr id="_237c69a7-6c3c-4f1f-81d5-26fd3a720871"><td id="_f258245a-155e-c989-60ad-6abfdd65fd60" valign="top" align="left">Adding, removing or reordering an input or an output</td>
<td id="_7727d2b8-f718-32b1-c2dc-d98f23c99d76" valign="top" align="left">yes</td>
</tr><tr id="_cc7b7a8b-587a-589d-f7ef-8a0349ef06c8"><td id="_51d8d3c8-ae6e-667d-a967-2f7c8a09c036" valign="top" align="left">Adding or removing a type admitted by an input or an output, or changing the   type of an attribute</td>
<td id="_685f0344-77bf-9a59-50a1-9d6844603c47" valign="top" align="left">yes</td>
</tr><tr id="_693bd2ee-ecba-fc70-ca3d-62572fb5a4ed"><td id="_a15c4bf0-b756-c90e-f920-650d7d1c450e" valign="top" align="left">Admitting behaviour the previous definition did not, under an unchanged   signature</td>
<td id="_8ed0c83c-1574-ec5f-62d8-56b5145235d9" valign="top" align="left">yes</td>
</tr><tr id="_38d710e1-b67d-cf9a-a2d5-54f03a71cbe2"><td id="_e24ab5d8-0d28-9d0b-4b2e-5c5d049d7c27" valign="top" align="left">Resolving an ambiguity in the previous definition in favour of what   implementations already do</td>
<td id="_5ec640c1-3cdc-6f5c-4d05-99c566cebae3" valign="top" align="left">no</td>
</tr></tbody>
<note id="_f30e2a29-5f1a-41b0-f09f-48437d1170b0"><p id="_57c1d064-0b9c-a221-7025-63967793693a">The third row is symmetric: widening a type constraint requires a new version of the operator just as narrowing one does. What the previous row’s prohibition protects is the previous definition, which stays available at its own version.</p>
</note></table>



<p id="_aed6b860-81dd-202a-cb2f-e51899189bf8">A model binds each of its nodes to an operator definition by the operator set version the model imports; see  <xref target="operator-set-import" style="short"/>. How a consumer binds that definition to an implementation is outside the scope of this document.</p>
</clause>

<clause id="_32d512a3-f695-423c-d5fb-f985e85094c6" anchor="compatibility" obligation="normative">
<title id="_f3d42f43-9c56-59ec-d09c-8d1eefa6eebf">Compatibility obligations</title>
<p id="_ee73a6d7-162d-7537-72a4-403a2d7205f6">A consumer that claims support for operator set version <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mi>n</mi>
  </mstyle>
</math><asciimath>n</asciimath></stem> of a domain
SHALL accept models declaring any version <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mi>m</mi>
    <mo>≤</mo>
    <mi>n</mi>
  </mstyle>
</math><asciimath>m &lt;= n</asciimath></stem> of that domain, and
SHALL evaluate each node according to the operator definition in force at
version <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mi>m</mi>
  </mstyle>
</math><asciimath>m</asciimath></stem>.</p>

<admonition id="_b51465ab-4858-5c74-b3dc-d58f3c3f9d77" type="important">
<name id="_086f1085-78b3-eb3b-74e4-bb8c6b129816">Editorial note</name>
<p id="_25209694-2a22-8601-5839-216e80035253">The above states backward compatibility as an obligation. Current runtimes do not universally meet it. Either the obligation is weakened, or it is stated as written and the gap is recorded in Annex C as a known divergence. The latter is recommended: a standard states the requirement, and a conformance statement records what an implementation achieves.</p>
</admonition></clause>

<clause id="_0b8a4d11-4f05-4382-8f5d-b60110839ba5" obligation="normative">
<title id="_492c33e7-ebfa-0a71-a062-205c65d11897">Deprecation and removal</title>
<p id="_2f690c15-af13-c276-1524-4365a94b06b4">An operator MAY be marked deprecated in an operator set version. Deprecation SHALL NOT remove the operator, and a consumer SHALL continue to evaluate deprecated operators.</p>
</clause>
</clause>

<clause id="_f64ab812-b6d9-058f-f87a-725e8c7c5d66" anchor="security" obligation="normative">
<title id="_ae224e7b-a312-c346-eadf-863119dfb71f">Security and resource limits</title>
<clause id="_9bab8dc2-1e12-2aa6-222e-2ac36aecf3e9" obligation="normative">
<title id="_a1520fdb-f7c0-a1d2-3cc3-4f2d3bb760e5">General</title>
<p id="_9afb2557-f439-187e-1b2e-570b5fe3165f">A <xref target="model" style="short"><display-text>model</display-text></xref> is data from an untrusted source unless the consumer knows otherwise. This clause states the obligations that follow.</p>
</clause>

<clause id="_78d3a83f-c449-10c1-f017-a959f4bb82eb" anchor="threat-model" obligation="normative">
<title id="_6f5dc569-bc29-3902-26bb-565b069a9323">Threat model</title>
<p id="_5df0abd3-ea42-8d3f-3bb8-a0e4282b2261">A <xref target="consumer" style="short"><display-text>consumer</display-text></xref> defends against a model crafted so that processing it causes the consumer to read or write a file the caller did not intend, to consume unbounded memory, processor time or disk, or to recur without bound.</p>

<p id="_273673f7-b788-1332-dfb2-0f93ecb9f304"><xref target="tbl-threats" style="short"/> states the attacks a consumer is obliged to defend against and the clause that states the defence.</p>

<table id="_3f67564d-0f1c-0798-acc8-fccd8dabe26a" anchor="tbl-threats"><colgroup><col width="33.3333%"/><col width="50%"/><col width="16.6667%"/></colgroup>
<name id="_8ca833fd-06b1-d3cf-cbfd-90e05064f75d">Threats and the defences required</name>
<thead><tr id="_88f574ec-a87a-9f03-4b5f-7cdfe9f06a3a"><th id="_c4ee59f4-f96d-474f-38a0-1739a1936ca9" valign="top" align="left">Threat</th>
<th id="_5988d929-03cc-3ad5-90d1-6fa150878021" valign="top" align="left">Description</th>
<th id="_3c887c27-f189-f2fe-7788-e85ac215eac9" valign="top" align="left">Defence</th>
</tr></thead>
<tbody><tr id="_b1ee40d7-1a0a-ca4e-e4ee-1d373851f8cd"><td id="_4a18849b-3d9b-0e13-3523-c545ef622e8d" valign="top" align="left">Path traversal</td>
<td id="_c6326a82-fbce-ba84-f433-24253bd47e62" valign="top" align="left">An external data reference escapes the model directory through a   parent-directory component or an absolute path.</td>
<td id="_66e4b6ca-faf0-9ac2-7257-50cb1631e671" valign="top" align="left"><xref target="path-resolution" style="short"/></td>
</tr><tr id="_10afb774-3874-57a3-bef9-63effefd73ee"><td id="_2a9967d5-f12d-e53d-33ff-30995582a66d" valign="top" align="left">Symbolic link traversal</td>
<td id="_f94228a3-6d2e-abd1-6df1-bbb8c1465ef2" valign="top" align="left">A component of an external data path is a symbolic link resolving outside the   model directory.</td>
<td id="_6b0dd4cf-9af4-d397-f337-f16af49d842c" valign="top" align="left"><xref target="path-resolution" style="short"/></td>
</tr><tr id="_5955492b-885b-fbdb-932f-3ea4ca795336"><td id="_88756496-722c-00e5-f4d0-94f99abaf194" valign="top" align="left">Hard link exposure</td>
<td id="_aa865c19-0f8e-4696-fac1-dafded056761" valign="top" align="left">A file in the model directory is a hard link to a file outside it, and so   passes a check that considers symbolic links alone.</td>
<td id="_1f1561ed-13a5-d726-1852-b416f72ec2f0" valign="top" align="left"><xref target="path-resolution" style="short"/></td>
</tr><tr id="_8136d4d1-3d35-460f-1b9e-8bcb01336532"><td id="_92a3dae6-9d46-5ea9-bb11-ca0357fcd398" valign="top" align="left">Resource exhaustion</td>
<td id="_80f1fcc0-9fc6-5f47-9238-bd00a07557b9" valign="top" align="left">A model declares a tensor, a dimension, a loop bound or an external file so   large that evaluating it exhausts memory, disk or time.</td>
<td id="_6c9950e5-c796-952b-7c06-ce798ec24b90" valign="top" align="left"><xref target="resource-bounds" style="short"/></td>
</tr><tr id="_7574b835-69d5-a8a5-3b38-50e10d940838"><td id="_14649324-5592-2b9d-e423-610a687d5046" valign="top" align="left">Unbounded recursion</td>
<td id="_48d1f0f5-1529-fc14-a027-16391b3f685e" valign="top" align="left">Subgraphs nest so deeply that evaluating them exhausts the evaluation stack.</td>
<td id="_e6592fe0-5a59-f5b6-b5ed-f2c9ec1ae09a" valign="top" align="left"><xref target="resource-bounds" style="short"/></td>
</tr></tbody>
</table>

<p id="_a2edc183-785d-9db4-e92c-f43642b42131">The following are outside the scope of this document: defects in the implementation of an individual operator; the integrity of the channel by which a model was obtained; and the behaviour of a consumer processing a file that is not an ONNX model.</p>
</clause>

<clause id="_07ffa841-bfac-064f-f27d-b27ac80f9612" anchor="path-resolution" obligation="normative">
<title id="_294baa23-5eb8-53ea-db44-1e40d65ca4d8">External data and path resolution</title>
<p id="_4bba9882-5d62-15b0-92e5-cb87ab33f632">A consumer SHALL resolve the <tt>location</tt> of an external data reference (<xref target="external-reference" style="short"/>) against the directory holding the model file, and SHALL reject a reference that resolves outside that directory. Resolution SHALL take account of every component of the path, not the final component alone.</p>

<p id="_fe6c1ef6-a49d-9be8-8159-9eb21d89d291">A consumer SHALL reject a reference whose path, or any component of it, is a symbolic link.</p>

<p id="_8ceca715-c976-a612-3fa5-416050ec0fdf">A consumer SHALL reject a reference naming a file that has more than one hard link.</p>

<p id="_0e8d526c-8c1b-2818-677a-8b18208cb889">A consumer SHALL establish that the file it has opened is the file the resolution identified, and SHALL NOT rely on the path alone; a path checked before opening can name a different file by the time it is opened.</p>

<p id="_f82f5d8a-6757-183e-0d1d-d999998aed4b">A consumer MAY be configured to resolve references outside the model directory. Such a configuration SHALL be explicit and SHALL NOT be the default.</p>

<p id="_a53a1944-a7e0-f702-e3d6-53dfd7f1767e">Rejection under this subclause is a validation failure under
<xref target="validation-clause" style="short"/>.<note id="_11f6eaa7-1242-2b56-1bea-126863890460"><p id="_a9c1bded-1d33-980c-32c0-90456726bd6c">These requirements are stated as obligations on the outcome, not on the mechanism. The upstream implementation meets them with a layered check — canonical containment, a symbolic link test, a constrained open, and a hard link count — and the constrained open is the only layer that is not subject to a change of the file system between the check and the open.</p>
</note></p>


</clause>

<clause id="_be21af5d-e14c-54c3-0e39-4769c7384ca9" anchor="resource-bounds" obligation="normative">
<title id="_8fa5ad9b-ed09-ff20-bb1c-744bae17a0b5">Resource bounds</title>
<p id="_8ec98d88-7bf0-5667-b2ef-6eeef92ce68c">A consumer MAY impose a limit on the memory it allocates for a model, on the extent of a dimension, on the depth to which subgraphs nest, on the number of iterations of a loop, and on the size of an external data file.</p>

<p id="_9b3414e9-e735-31d8-f2e4-d2fed52e4991">A consumer that imposes such a limit SHALL document it, and SHALL report a model that exceeds it as a refusal under  <xref target="validation-clause" style="short"/> rather than failing in any other way.</p>

<p id="_fe6db2f7-6816-755b-b9ee-bb103b0234e2">A consumer SHALL validate the declared size of an external data reference
against the size of the file before allocating for it.<note id="_b5743a70-2624-13be-71a9-64a68298940c"><p id="_8b16fcf3-0ccf-75a2-deb4-cf5b6f1df4b0">A consumer that refuses a model for exceeding a documented limit conforms; one that crashes does not. The limits themselves are implementation-defined, and a conformance statement (<xref target="annex-conformance" style="short"/>) records them.</p>
</note></p>


</clause>

<clause id="_b408707a-1ef1-d610-b037-29aa5787438a" obligation="normative">
<title id="_9e19360a-c146-d608-797d-7f109dc34cde">Handling untrusted models</title>
<p id="_24de0d1c-7de6-ff45-410f-eadeba1feed4">A consumer SHALL validate a model under <xref target="validation-clause" style="short"/> before evaluating it.</p>

<p id="_8398fc39-13c1-39e9-9a5a-b9d2170f3ae8">A consumer SHOULD make the resolution of external data an explicit, opt-in step when the model is untrusted.</p>
</clause>
</clause>

<clause id="_276a496a-7738-0c56-9c9c-e764621a7c6e" anchor="maintenance" obligation="normative">
<title id="_d121311f-a73a-f958-c61e-2289c21b407b">Maintenance and extension</title>
<clause id="_59a64dab-d101-d915-4c77-ced5e4ffdf79" obligation="normative">
<title id="_342d91c9-6525-a2bd-ace8-0ea79b350ffd">Custom domains</title>
<p id="_408b6403-cf5a-daf4-c981-08598523ad99">A model MAY use operators in a <xref target="domain" style="short"><display-text>domain</display-text></xref> not defined by <eref type="inline" bibitemid="onnx-part-2" citeas="ONNX 1-2"/>.</p>

<p id="_ec1821ec-260b-93cb-0bf2-7501a6ae60bf">A consumer that does not implement such a domain SHALL report the operator as unsupported under  <xref target="conformance" style="short"/>, and SHALL NOT evaluate the model.</p>
</clause>

<clause id="_bfffef22-4ea9-4e5b-17cd-a3421cece4a9" obligation="normative">
<title id="_18ec30b1-4561-02d0-138b-55ac855ca0de">Experimental operators</title>
<p id="_ff321db3-e7dc-fc7e-f3a2-64b896116d4c">This document does not recognize an experimental status for an operator. Every operator of an operator set published under  <eref type="inline" bibitemid="onnx-part-2" citeas="ONNX 1-2"/> is subject without exception to  <xref target="operator-set-evolution" style="short"/>.</p>

<p id="_9ba6c742-d750-3882-3f97-526821c3e8df">An operator whose definition is not yet settled SHALL be published in a
<xref target="domain" style="short"><display-text>domain</display-text></xref> of its own, and is a custom operator under the preceding subclause.<note id="_f164096e-1029-f9df-5bed-e630864d43bf"><p id="_450f393b-659d-c47a-ad6c-2371a768d338">Upstream reached the same position. The serialized form of an operator set carries a status of  <tt>EXPERIMENTAL</tt> or <tt>STABLE</tt>, and an operator marked <tt>STABLE</tt> may not change; but experimental operators have not been accepted into the ONNX domains since release 1.5, and the operators that had been are withdrawn. The field remains in the format, and this document gives it no effect.</p>
</note></p>



<p id="_4f8a8618-4669-dd71-414a-7c4a58139299">A producer SHOULD replace a withdrawn experimental operator with the operators that supersede it.  <eref type="inline" bibitemid="onnx-part-2" citeas="ONNX 1-2"/> records the correspondence.</p>
</clause>

<clause id="_4f306f11-1d83-5f30-af76-32b0697d428b" obligation="normative">
<title id="_864384c7-735e-e2c6-0674-9d734c033652">Adding an operator</title>
<p id="_13d34a53-da50-226e-8e67-a3c512885cb0">The procedure by which an operator enters an <xref target="operator-set" style="short"><display-text>operator set</display-text></xref> is specified in <eref type="inline" bibitemid="onnx-part-2" citeas="ONNX 1-2"/>. The constraints that procedure must respect are in <xref target="versioning" style="short"/>.</p>
</clause>

<clause id="_0ef06f06-1280-5a5c-eed1-efe542765bdc" obligation="normative">
<title id="_0185f6bd-9c75-a432-8b89-bbd7ebe51f1f">Amending this document</title>
<admonition id="_ac2d0c60-9582-01c4-d2e7-f0a024a8f97a" type="important">
<name id="_f2db9a0a-3628-147e-5ceb-408dc5e10bf0">Editorial note</name>
<p id="_2c16851c-9e6b-766f-6b56-fa312ee7e050">State the amendment process for this part, and its relationship to the release cadence of  <eref type="inline" bibitemid="onnx-part-2" citeas="ONNX 1-2"/>. The division into parts exists so that an operator added upstream does not force a new edition of this part; the amendment process is what makes that real rather than aspirational.</p>
</admonition></clause>
</clause>










</sections><annex id="_d94c7c95-febd-48f9-22ed-61667d8fb809" anchor="annex-conformance" obligation="normative">
<title id="_4bdf6b76-21fa-ff8b-55a5-d3e778b8da27">Conformance statement</title>
<p id="_9a284c63-b90d-64f2-e60c-fad1e024219f">A conformance statement claiming conformance to this document SHALL supply the information in  <xref target="tbl-conformance-statement" style="short"/>.</p>

<table id="_d9518c55-d013-4018-db8a-27b094dad406" anchor="tbl-conformance-statement">
<name id="_4ae910e3-5efb-5f9d-1ef9-25a5c794dbbf">Content of a conformance statement</name>
<thead><tr id="_913a2b35-dcf6-3a73-64f8-62a76795a252"><th id="_6ac60a43-6d29-2944-e28a-daffbb3e1b09" valign="top" align="left">Item</th>
<th id="_a872f617-646c-dbfa-eda1-b4d98d567eb0" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_52d43253-1d7d-7770-bbad-ab83a4bbaa85"><td id="_088a74d4-1ac5-e71d-5201-b75414f0a5b7" valign="top" align="left">Identity and version of the implementation</td>
<td id="_d92e6abc-28ea-5229-90d3-fdbae2506ea2" valign="top" align="left">mandatory</td>
</tr><tr id="_7f7c5b3e-37df-85ce-ec00-703b0e152920"><td id="_ce8dc5d5-30ad-c2bb-a747-ed08e9aa7f52" valign="top" align="left">Conformance classes claimed (see <xref target="conformance" style="short"/>)</td>
<td id="_d6e6aab4-dd60-340d-f937-de86c9874137" valign="top" align="left">mandatory</td>
</tr><tr id="_12442ae9-d404-5d74-8419-4d66fc022edd"><td id="_92ccca79-cc7e-6b2a-1926-92cc6bbc47b5" valign="top" align="left">Conformance profiles claimed, if any</td>
<td id="_3c65d20c-978d-d245-4b94-b3b39f244ed4" valign="top" align="left">mandatory</td>
</tr><tr id="_fe93d202-2a33-c91c-cd26-18e52519db9d"><td id="_2d6b1303-525e-ab95-1f08-a71d08067506" valign="top" align="left">IR versions supported</td>
<td id="_a05df13b-c7d1-23fb-5469-aacacc5b5c97" valign="top" align="left">mandatory</td>
</tr><tr id="_567c94f6-69a6-16bd-2916-033e145afc63"><td id="_2695214a-06a9-007c-6c8c-5f881ddf658c" valign="top" align="left">For each domain, the operator set versions of <eref type="inline" bibitemid="onnx-part-2" citeas="ONNX 1-2"/> supported</td>
<td id="_25fba420-4cfb-93ff-cae8-07b8c4b17fd0" valign="top" align="left">mandatory</td>
</tr><tr id="_0823479b-b210-1e4c-3bcf-15709c6bb0e7"><td id="_9b41c033-cc99-9e6a-832b-d48d1df078f8" valign="top" align="left">For each operator set version, the operators not supported</td>
<td id="_350c6bbe-33c3-8d68-8799-cfb7d6a0cc48" valign="top" align="left">mandatory</td>
</tr><tr id="_c6bb5a9f-4e64-1b6e-8460-8cbf90ff3e13"><td id="_9f16a479-6f28-dd88-b3ab-c35b7a740ac3" valign="top" align="left">For each element type supported, the numerical tolerance achieved</td>
<td id="_6be44c0b-3272-90f4-86d5-9d023fd010f3" valign="top" align="left">mandatory</td>
</tr><tr id="_c1ba5281-f47b-3715-2836-f584c2eeac1c"><td id="_d48da9ca-4f55-4d72-ffbf-0845d91b0b02" valign="top" align="left">Result of the test package of <eref type="inline" bibitemid="onnx-part-3" citeas="ONNX 1-3"/>, by version</td>
<td id="_85c4b3e8-7b72-dc71-8ab2-ecbb35602cc1" valign="top" align="left">mandatory</td>
</tr><tr id="_de557298-df4e-d2bb-8d90-057210252ad6"><td id="_0295d114-34c3-8854-77a8-f1aeb6d21224" valign="top" align="left">Known divergences from this document</td>
<td id="_ed01cc95-edac-7c8d-d2e2-a1bea980f8b6" valign="top" align="left">mandatory</td>
</tr><tr id="_04d77652-3af5-2b91-b9a6-4c2f1ccc50a9"><td id="_ada7688a-8844-2a69-ed9c-b97e58dc5e8e" valign="top" align="left">External data handling policy, including path resolution</td>
<td id="_b975974c-38c4-2e67-d99c-37285a289c15" valign="top" align="left">conditional, if external data is supported</td>
</tr><tr id="_0bd30362-4565-44fc-d484-cf1a1f23025c"><td id="_df53d37d-daf9-a527-96bb-d3350990a01b" valign="top" align="left">Documented resource limits (see <xref target="security" style="short"/>)</td>
<td id="_6a28ab83-1248-715a-de8a-c516065e3a2c" valign="top" align="left">mandatory</td>
</tr></tbody>
</table>
</annex><annex id="_0fed3944-fb5a-1e89-1ff2-cbbfd32702fa" anchor="annex-schema" obligation="normative">
<title id="_51c42b6d-b42a-a37a-4058-63f6ddcfa2b7">Message definitions</title>
<clause id="_5a4b678a-512f-c044-9994-b0dadbac4915" obligation="normative">
<title id="_d9eae85b-8aa2-6018-de0c-0275f7888792">General</title>
<p id="_b2054735-0dca-d8f1-8047-2fc3ae3c6445">This annex states the message definitions of the serialized form: 35 messages and 166 fields. <xref target="serialization" style="short"/> states how the octets of a message are laid out; this annex says which fields there are.</p>

<p id="_fb5d7d7a-9886-9c92-fab9-0c4cd35036e7">The tag of a field identifies it within its message and SHALL NOT be reused. The wire type is the encoding of its value, per <xref target="tbl-wire-types" style="short"/>; together the two make the field key (<xref target="field-key" style="short"/>).</p>

<p id="_2c02aac4-5adf-63be-35dd-a13de9d0d79f">A field marked mandatory SHALL be present. A field marked optional MAY be absent, and a <xref target="consumer" style="short"><display-text>consumer</display-text></xref> SHALL accept a message in which it is. A field marked repeated holds zero or more values, and a <xref target="producer" style="short"><display-text>producer</display-text></xref> SHOULD write it in the form recorded here, packed or not; a consumer SHALL accept either (<xref target="repeated-fields" style="short"/>). A field marked deprecated SHALL NOT be written by a producer, and a consumer that reads one SHALL ignore it.</p>

<p id="_23691ee2-130e-5a1c-6019-5509e6e6f75d">The obligations are those in force at the IR version stated in <xref target="ir-version-specified" style="short"/>.<note id="_d3d22ad5-361c-64ba-cd6e-c667cc877192"><p id="_73c0e3f0-dd28-801e-bf74-9f468d96105d">23 of the 166 fields are mandatory. A schema cannot express the distinction: in the syntax this standard was derived from every field is optional, and the obligation is carried in the comments. Stating it in a table is the reason this annex exists.</p>
</note></p>



<table id="_d83d3280-3160-796a-976b-373c66c2c24d" anchor="tbl-schema-sources"><colgroup><col width="37.5%"/><col width="50%"/><col width="12.5%"/></colgroup>
<name id="_f7ea5b03-94c1-bc4d-460b-4d96ea9730d2">Subclauses of this annex and the schema file each restates</name>
<thead><tr id="_245e9182-3abe-df1b-40ed-443f9bf70b24"><th id="_d58d6500-94b3-e2c4-4da9-4e80582efc24" valign="top" align="left">Subclause</th>
<th id="_d0f09927-6623-677d-7a24-b5eb4c4c99ab" valign="top" align="left">Source</th>
<th id="_ed5cbdb5-e9f7-2c0b-1bb4-de736c76d21f" valign="top" align="left">Messages</th>
</tr></thead>
<tbody><tr id="_2a5421f8-aca0-ae64-bbee-50758cfcccbf"><td id="_cf7bc848-b456-c139-db26-92f4503461eb" valign="top" align="left">B.2 Model, graph and tensor messages</td>
<td id="_bed4a37d-93fd-6483-a999-933dc8e80b93" valign="top" align="left"><tt>upstream/onnx/proto/onnx-ml.proto</tt></td>
<td id="_de6da266-c93b-6355-6d6b-af876a7758b1" valign="top" align="left">30</td>
</tr><tr id="_ffdd30c9-356d-96bd-2588-6844d90527b6"><td id="_0312dddc-7c36-5c0f-9017-19c147c057d3" valign="top" align="left">B.3 Operator set messages</td>
<td id="_70ed83d8-d16d-0027-8939-8e7cddb92145" valign="top" align="left"><tt>upstream/onnx/proto/onnx-operators-ml.proto</tt></td>
<td id="_9781103a-5bad-1497-3c69-b67a55d326bb" valign="top" align="left">2</td>
</tr><tr id="_5ec87fca-6e37-ab63-21e3-3ac17dcaf40b"><td id="_a0c5f461-a34f-97b0-646c-93492d7e95ea" valign="top" align="left">B.4 Map and sequence messages</td>
<td id="_663c4630-7ece-17d8-376b-e9bb309ffab5" valign="top" align="left"><tt>upstream/onnx/proto/onnx-data.proto</tt></td>
<td id="_dede7648-bdf6-0e76-d877-c6bf2e17228f" valign="top" align="left">3</td>
</tr></tbody>
</table>
</clause>

<clause id="_4f04d758-3a90-a739-7f30-8d6a837ebe5a" obligation="normative">
<title id="_ef20ef03-0a10-87e1-c3c5-f9d7b72fe042">Model, graph and tensor messages</title>
<clause id="_2aa882b5-013f-e4d9-aa01-614763b88850" anchor="schema-version" obligation="normative">
<title id="_701600e3-d912-9b02-2256-857a2c5fae6c">Version</title>
<table id="_d659224b-9b5c-0c0e-cc41-367c6ea764d6" anchor="tbl-schema-version"><colgroup><col width="75%"/><col width="25%"/></colgroup>
<name id="_f074eeee-f5ee-f16c-a172-6cfcffa3b8f3">Values of <tt>Version</tt></name>
<thead><tr id="_99b9e060-1143-c708-ec31-0d061597e04c"><th id="_39edbbcf-6c0e-ff2b-91ea-217cc006a254" valign="top" align="left">Name</th>
<th id="_5413d541-cea0-2af4-4d4d-caed37fb7c7b" valign="top" align="left">Value</th>
</tr></thead>
<tbody><tr id="_bd82b713-7ea8-8b46-9e6f-97e79ea79775"><td id="_f15a5894-8d92-0320-6777-f957ae8917aa" valign="top" align="left"><tt>_START_VERSION</tt></td>
<td id="_ee6642f2-0064-6f23-5535-871068f2293e" valign="top" align="left">0</td>
</tr><tr id="_87d40bd5-e60f-9ceb-736e-585aa2875385"><td id="_4adda4fb-6308-3e4d-78a0-70907bcc23f2" valign="top" align="left"><tt>IR_VERSION_2017_10_10</tt></td>
<td id="_8dab03c3-e6c3-2d26-8b74-f003f5130091" valign="top" align="left">1</td>
</tr><tr id="_eef153f8-fb09-9285-f269-e106a1f592b9"><td id="_081745d2-6abd-6b03-7548-20a90f983991" valign="top" align="left"><tt>IR_VERSION_2017_10_30</tt></td>
<td id="_9accd953-0c3f-05a0-916d-f6cec7eddef3" valign="top" align="left">2</td>
</tr><tr id="_44a0921a-1f5a-d75d-6d28-83867038132a"><td id="_6cf8d37b-09ba-a9b6-53c3-0fec5ac56172" valign="top" align="left"><tt>IR_VERSION_2017_11_3</tt></td>
<td id="_c656cba2-1e4f-4440-4d02-fb602e68795c" valign="top" align="left">3</td>
</tr><tr id="_0dc0eb1e-7cf2-59d7-dd92-d0b08408dcb9"><td id="_4f6311b5-61cd-5e3a-cd48-90042a3d00fd" valign="top" align="left"><tt>IR_VERSION_2019_1_22</tt></td>
<td id="_950ccb8a-d4e8-ffe0-9f5e-75c5719058f0" valign="top" align="left">4</td>
</tr><tr id="_fde99a7e-7b64-820f-9adc-a8598ce214d0"><td id="_194719cb-ddb4-e1d7-f8a8-69a9df85825a" valign="top" align="left"><tt>IR_VERSION_2019_3_18</tt></td>
<td id="_759f5388-5040-c18b-b848-4d82b9883fc0" valign="top" align="left">5</td>
</tr><tr id="_651be153-60ce-ec5b-ffc7-61791cadbccf"><td id="_6750659c-d4c1-8bdc-b13b-670e2f537726" valign="top" align="left"><tt>IR_VERSION_2019_9_19</tt></td>
<td id="_720240c1-7870-c461-6421-0dd99a2299bf" valign="top" align="left">6</td>
</tr><tr id="_8b11ac56-6152-e9c8-ee39-0f67f4ab4d47"><td id="_a34d475a-d98d-58b2-b1b2-61343e52bb07" valign="top" align="left"><tt>IR_VERSION_2020_5_8</tt></td>
<td id="_138be34e-0d57-b1e0-1ca3-c035f3af80fa" valign="top" align="left">7</td>
</tr><tr id="_f833d57a-b8f8-57d5-798a-6b05e2101aab"><td id="_70a927a4-a884-0932-8a6e-01a0fd06f4c3" valign="top" align="left"><tt>IR_VERSION_2021_7_30</tt></td>
<td id="_76c24ef5-6e8d-f8d4-fb1f-c2f2c995a6aa" valign="top" align="left">8</td>
</tr><tr id="_38c327df-0954-d124-b365-e52a5e80a1ea"><td id="_c0d3f878-6d5d-a2e5-e352-10ff3c4536b8" valign="top" align="left"><tt>IR_VERSION_2023_5_5</tt></td>
<td id="_51c87626-ab64-e4b7-4742-f5d20c1a7a6e" valign="top" align="left">9</td>
</tr><tr id="_fafa98b8-52a2-76fe-b21d-5b8da58ac070"><td id="_1656dd6b-0c1b-2131-63cc-53c02590accc" valign="top" align="left"><tt>IR_VERSION_2024_3_25</tt></td>
<td id="_710fc819-07fb-46e0-3359-462c1cdce903" valign="top" align="left">10</td>
</tr><tr id="_6459197b-4aab-135e-057a-cff39291f4d6"><td id="_5f0faaf1-f33f-b325-f94d-c3c90ee38020" valign="top" align="left"><tt>IR_VERSION_2025_05_12</tt></td>
<td id="_d7264bad-ad86-0266-247a-10c75ca3b04b" valign="top" align="left">11</td>
</tr><tr id="_1849b9b2-8284-630a-ab36-d74d71fc9117"><td id="_984edae9-7453-9ef6-7e36-1af74da231dd" valign="top" align="left"><tt>IR_VERSION_2025_08_26</tt></td>
<td id="_80706137-c3bb-abb0-65b2-64dbf892c567" valign="top" align="left">12</td>
</tr><tr id="_fb4c5d6b-3c62-bb7c-57c8-1559da0c511d"><td id="_eb2b6d89-592c-9a85-fc40-38c83dc776ea" valign="top" align="left"><tt>IR_VERSION_2025_11_06</tt></td>
<td id="_23f168c8-0af7-227e-ae64-8eee6a76fe3b" valign="top" align="left">13</td>
</tr><tr id="_a202dea2-dccb-210f-5de4-43b92243e27b"><td id="_862f6d7a-2551-3a9a-97dd-083be39376bd" valign="top" align="left"><tt>IR_VERSION</tt></td>
<td id="_4738b746-03d4-5c6a-fdd2-9984a3b3086a" valign="top" align="left">14</td>
</tr></tbody>
</table>
</clause>

<clause id="_7f40f06a-89ef-cc10-a1e7-43f71b3323ad" anchor="schema-attributeproto" obligation="normative">
<title id="_9bb9c641-55ab-13ff-b31b-4bc0fb8789ff">AttributeProto</title>
<table id="_208d6856-3f0e-ea19-9160-a4b85eb399f1" anchor="tbl-schema-attributeproto"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_42b891e8-0557-9f8e-4769-6afae34cc092">Fields of <tt>AttributeProto</tt></name>
<thead><tr id="_920c4c7e-8e41-7395-8c53-3940ab110da0"><th id="_8a622662-e13b-b1da-98c4-734df4c7c546" valign="top" align="left">Field</th>
<th id="_56b8292e-b566-0ee4-0967-9572ad7b0cf9" valign="top" align="left">Tag</th>
<th id="_41b9826e-7905-5b25-64fa-5d68c520ed18" valign="top" align="left">Wire type</th>
<th id="_d9db1e24-0709-2e00-fdf4-684c8988d730" valign="top" align="left">Type</th>
<th id="_b6f34620-3d3f-d60c-5205-3ab9573668d3" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_4044b28e-2515-c135-1e64-d9478dad9f9d"><td id="_5c8b5341-775a-2853-5ca1-b0317933ca81" valign="top" align="left"><tt>name</tt></td>
<td id="_1d84d536-230d-75a6-dfd7-995012000f86" valign="top" align="left">1</td>
<td id="_ca3d9674-e903-4804-3a0d-fedf582f8c1d" valign="top" align="left">2</td>
<td id="_bfa31086-03bb-526c-6087-6148466e52ba" valign="top" align="left"><tt>string</tt></td>
<td id="_5ff80fca-55a6-aaa6-024b-3ef086d82908" valign="top" align="left">mandatory</td>
</tr><tr id="_f54b83b2-34ae-5501-d73e-957f390879a7"><td id="_2676734b-3c87-e2ea-324e-6078619cefcd" valign="top" align="left"><tt>ref_attr_name</tt></td>
<td id="_ff0fe439-c6b6-2ce0-5592-f6775ce94fdf" valign="top" align="left">21</td>
<td id="_76be9484-05b5-255e-0519-105322f71647" valign="top" align="left">2</td>
<td id="_fb8efee9-b46c-3bf5-dfbd-c8c700a31139" valign="top" align="left"><tt>string</tt></td>
<td id="_f9a92d53-4650-45ad-02fa-e6185e0d6de6" valign="top" align="left">optional</td>
</tr><tr id="_822fbc6a-1797-0053-97f8-b98c2d0a69f7"><td id="_35fe7cfd-196d-19f8-4d04-86339beeb771" valign="top" align="left"><tt>doc_string</tt></td>
<td id="_9c756845-083c-102f-914f-583339add0e1" valign="top" align="left">13</td>
<td id="_904cd2c2-1608-dabf-49c7-8e8898e218ae" valign="top" align="left">2</td>
<td id="_b825aef6-adbd-0723-83e8-3a1af71f5b12" valign="top" align="left"><tt>string</tt></td>
<td id="_dba42d72-b8c4-7bcd-d595-445e50f789a3" valign="top" align="left">optional</td>
</tr><tr id="_9a00e061-a136-991a-2890-faba3db1d642"><td id="_0bda339e-0634-1bf8-1a44-4df424a87758" valign="top" align="left"><tt>type</tt></td>
<td id="_3be85c11-91a2-8b50-3bf5-a4c72ba324cc" valign="top" align="left">20</td>
<td id="_02eb5855-cd6b-939f-7354-c771987a464e" valign="top" align="left">0</td>
<td id="_feaea7b5-4e22-75b0-101f-bad783ad89ed" valign="top" align="left"><tt>AttributeType</tt></td>
<td id="_5abeca2b-d3c2-f11b-6f76-dd9eb9ba84b6" valign="top" align="left">mandatory</td>
</tr><tr id="_c168c4fa-4073-1848-bfc1-fbbc802b8517"><td id="_3a5958f2-0962-9b0e-91d6-d9391b12947f" valign="top" align="left"><tt>f</tt></td>
<td id="_91c31916-b39c-5267-efb8-62899c2527bb" valign="top" align="left">2</td>
<td id="_00a91567-df74-0be9-df31-5928035d9bee" valign="top" align="left">5</td>
<td id="_87095c8d-34d9-9173-f727-7df89607f593" valign="top" align="left"><tt>float</tt></td>
<td id="_c8b55e76-c0ea-0095-77fb-364353036a25" valign="top" align="left">mandatory</td>
</tr><tr id="_a2f1d6f7-002c-64c0-1ce9-f95c7897fe60"><td id="_1b3c6b8b-e0ed-01ae-91cd-c845b0397782" valign="top" align="left"><tt>i</tt></td>
<td id="_a85931f0-7446-1922-19dc-c8fe4fc19e10" valign="top" align="left">3</td>
<td id="_22019df1-3094-e78d-806d-cbd220647768" valign="top" align="left">0</td>
<td id="_3d80b7a4-ee95-7c88-be51-b495846cad68" valign="top" align="left"><tt>int64</tt></td>
<td id="_c4b20d21-5581-9117-86b4-4544e20cab7a" valign="top" align="left">optional</td>
</tr><tr id="_7b9ce6dc-fecb-8803-d3e4-77959551c03f"><td id="_eb12a36b-ea3c-659e-3f3f-34b4cf0e0632" valign="top" align="left"><tt>s</tt></td>
<td id="_14c98817-a5e6-46e7-6995-18dedb07477e" valign="top" align="left">4</td>
<td id="_771d1dc6-14f6-b11b-99de-4ed34d5b8211" valign="top" align="left">2</td>
<td id="_eb4917eb-8609-3039-4c73-baba64dc73ae" valign="top" align="left"><tt>bytes</tt></td>
<td id="_c4aa8301-3358-b57c-eb9e-07a760812a08" valign="top" align="left">optional</td>
</tr><tr id="_558a7952-6c22-cf80-8c11-796dd67605c8"><td id="_750b15f8-3d33-d60a-2ea1-694342efc744" valign="top" align="left"><tt>t</tt></td>
<td id="_66d02b50-29a9-f335-632a-e85ff2e373d5" valign="top" align="left">5</td>
<td id="_2ae23e8b-6c92-1d82-bf60-f2d9c0fa4f94" valign="top" align="left">2</td>
<td id="_e541b3a9-ac93-f308-b783-60c21f169ab4" valign="top" align="left"><tt>TensorProto</tt></td>
<td id="_9e08ee56-24ca-ba72-52c3-fbf54740adaf" valign="top" align="left">optional</td>
</tr><tr id="_5566b70d-bd6c-095f-78fb-52078ab75af6"><td id="_823b3bf3-33aa-bab2-b4d8-5d812d0d7fe6" valign="top" align="left"><tt>g</tt></td>
<td id="_a676acda-cc31-1bb3-b046-5ed18917dcc4" valign="top" align="left">6</td>
<td id="_25df63fe-6b50-42d3-a8a1-028e2d2868ce" valign="top" align="left">2</td>
<td id="_88a22624-efc8-f755-8587-2d6b52e4845e" valign="top" align="left"><tt>GraphProto</tt></td>
<td id="_968caae2-8c24-16e9-8f4b-1d68fac511ef" valign="top" align="left">optional</td>
</tr><tr id="_ada5eead-c253-d83e-6d8d-6afa54d30d86"><td id="_1055e816-a42f-bc6a-979f-899aa0179d4b" valign="top" align="left"><tt>sparse_tensor</tt></td>
<td id="_bdc98ed7-8d8a-6b0f-3160-719e9d839ec3" valign="top" align="left">22</td>
<td id="_d4182c2a-6002-03ca-f220-602e7fee2598" valign="top" align="left">2</td>
<td id="_6f29fa77-62b8-9612-e413-5a7eb4256046" valign="top" align="left"><tt>SparseTensorProto</tt></td>
<td id="_a29bb96e-57d4-b20d-dc0c-cc15974890b0" valign="top" align="left">optional</td>
</tr><tr id="_f6aa3a9a-9a5b-5ab6-6ab9-254cd474a881"><td id="_209a686b-db7c-3f1b-5710-094a3f0be0be" valign="top" align="left"><tt>tp</tt></td>
<td id="_6dcada40-2dad-bbdb-6f61-227a2c952852" valign="top" align="left">14</td>
<td id="_754beca0-61d3-bf8c-26f1-6936257bf52c" valign="top" align="left">2</td>
<td id="_d7c132c2-6905-cac1-9c7b-a564e8517f58" valign="top" align="left"><tt>TypeProto</tt></td>
<td id="_598134d2-66bf-75dc-6611-67ef90487f9a" valign="top" align="left">deprecated</td>
</tr><tr id="_51250f72-6f3e-37ef-f19a-be0381d9f7f3"><td id="_e60f1b8c-f6db-e082-2a64-6a8ba339b7e5" valign="top" align="left"><tt>floats</tt></td>
<td id="_7cb0044b-8c4a-46eb-0d82-f904342731c5" valign="top" align="left">7</td>
<td id="_378def1a-4f42-2efc-9d69-78cd51915dd9" valign="top" align="left">5</td>
<td id="_7db3738d-3fd0-5ebc-ee41-f0306d7fab81" valign="top" align="left"><tt>float</tt></td>
<td id="_0add2f9e-f3dc-8299-4873-c910b64320eb" valign="top" align="left">repeated</td>
</tr><tr id="_3c4163d6-d25e-a2a8-3f8c-af68d9aba2a9"><td id="_c028425d-dcf6-59ab-4419-06e08ad6c7fc" valign="top" align="left"><tt>ints</tt></td>
<td id="_a57742be-0bc6-19f4-34dc-0f1f90e19bdf" valign="top" align="left">8</td>
<td id="_d5b821fd-c58a-4632-70c4-0a3293723d5b" valign="top" align="left">0</td>
<td id="_a2c4d6a8-3b7d-647a-6721-eeb3c131f5e6" valign="top" align="left"><tt>int64</tt></td>
<td id="_f1ba950f-c7e7-98ec-d5fc-6c99456df253" valign="top" align="left">repeated</td>
</tr><tr id="_89809133-7be8-6b3c-a618-b3affc7897de"><td id="_b7d64476-c9ba-d7f5-9b69-211bf16d6cf4" valign="top" align="left"><tt>strings</tt></td>
<td id="_f3211b97-a9cf-4364-309f-5a60714d47ef" valign="top" align="left">9</td>
<td id="_d07bd582-444f-67d2-a47c-9a8e19cad19f" valign="top" align="left">2</td>
<td id="_99e4df1b-39e6-dd28-df9e-c567f526f4a1" valign="top" align="left"><tt>bytes</tt></td>
<td id="_e3699ab8-33d6-5f38-e0fb-34e4deef4ebf" valign="top" align="left">repeated</td>
</tr><tr id="_426ddc71-7db6-e9cc-baeb-188bd9ed043e"><td id="_241f3264-c611-748f-7d8b-901c1f71ac78" valign="top" align="left"><tt>tensors</tt></td>
<td id="_5465db3d-f207-81c0-5f74-e0766e02f816" valign="top" align="left">10</td>
<td id="_e36d6039-3d47-ec9c-53cf-19eeaeee4b87" valign="top" align="left">2</td>
<td id="_31e7c945-13ea-eb7d-4394-23c5da947ac6" valign="top" align="left"><tt>TensorProto</tt></td>
<td id="_f98ffd9f-a957-4159-281e-e86da444d302" valign="top" align="left">repeated</td>
</tr><tr id="_97856997-8c88-1bd6-0880-13e9baafad68"><td id="_8a0674c8-78da-dd35-b286-a83f8489844f" valign="top" align="left"><tt>graphs</tt></td>
<td id="_1244876a-d8ce-dec6-a602-c2714acc14d3" valign="top" align="left">11</td>
<td id="_8b40b20d-58bd-1abe-dbf2-c8588b220ad1" valign="top" align="left">2</td>
<td id="_c2e3c7d1-9883-bcea-149f-fe545058a3cf" valign="top" align="left"><tt>GraphProto</tt></td>
<td id="_9f21d066-a1cd-ffbb-f3c4-c7d65270ea93" valign="top" align="left">repeated</td>
</tr><tr id="_df304c09-8ea1-b5d8-f484-9a4fa8ac4029"><td id="_038784fc-e13e-8959-8ef6-b22fa19b499b" valign="top" align="left"><tt>sparse_tensors</tt></td>
<td id="_493ccd69-9ff4-f562-1071-667f64b57201" valign="top" align="left">23</td>
<td id="_3aa8f932-dba2-f2e6-8416-8127ed1baa10" valign="top" align="left">2</td>
<td id="_00266f89-21d5-a3f2-5a8b-7a81bc1fddfa" valign="top" align="left"><tt>SparseTensorProto</tt></td>
<td id="_8bebe015-2455-a758-43b2-463d5b14063c" valign="top" align="left">repeated</td>
</tr><tr id="_3d15ff73-953c-69a4-066b-6f9d9205ccc3"><td id="_cda44bdf-6d2a-d241-d050-b76cc11c1027" valign="top" align="left"><tt>type_protos</tt></td>
<td id="_46733cdf-df58-a044-7645-bd5d07f46bdb" valign="top" align="left">15</td>
<td id="_4a79a2d2-5640-5434-54fe-ed3508a00490" valign="top" align="left">2</td>
<td id="_eb083ee8-1bce-f9cc-c5b5-761e0f3e6adf" valign="top" align="left"><tt>TypeProto</tt></td>
<td id="_3e38624f-0fa9-069a-3d7b-df46afb237ca" valign="top" align="left">repeated</td>
</tr></tbody>
</table>

<p id="_308b97f2-6e0d-0940-44ee-ad193c040f17">Tags and names reserved in <tt>AttributeProto</tt>, which SHALL NOT be used: <tt>12, 16 to 19</tt>; <tt>"v"</tt>.</p>

<table id="_312f36ee-ae2c-b96d-6640-e875133d1561" anchor="tbl-schema-attributeproto-attributetype"><colgroup><col width="75%"/><col width="25%"/></colgroup>
<name id="_531bb42f-a604-3f60-c452-662415652be7">Values of <tt>AttributeProto.AttributeType</tt></name>
<thead><tr id="_e841b5cf-a7e5-2cb4-a4be-d01dbb4928ef"><th id="_ce4a9050-64ab-fd3a-fc6d-6f2d15814e39" valign="top" align="left">Name</th>
<th id="_833d48cd-d6e6-4445-5254-56bb20bf33a5" valign="top" align="left">Value</th>
</tr></thead>
<tbody><tr id="_2f9165b6-6389-b7a6-a8c7-cc1002ce3b15"><td id="_61397b8c-8603-861b-091c-0a537d96dad1" valign="top" align="left"><tt>UNDEFINED</tt></td>
<td id="_3463ff7c-404e-31b9-3bf4-6513914dae6f" valign="top" align="left">0</td>
</tr><tr id="_76ec76bf-a173-9e04-7d42-9a69cb5e515b"><td id="_fa3aec2c-e73f-cd26-c526-bd32c53cdc9f" valign="top" align="left"><tt>FLOAT</tt></td>
<td id="_2c9cb358-8522-d305-3c68-d8ec35c42d52" valign="top" align="left">1</td>
</tr><tr id="_5400c975-fecd-b022-6565-a5100dd9fc98"><td id="_30abe642-14a1-9de1-7d73-fc524f3960c3" valign="top" align="left"><tt>INT</tt></td>
<td id="_94346926-64c3-817a-1d9b-be1fbeb8e0ae" valign="top" align="left">2</td>
</tr><tr id="_db705834-da23-f701-e14e-cf1628872bcb"><td id="_99c1d663-afa9-16ba-1b4d-ec24d2ff1bef" valign="top" align="left"><tt>STRING</tt></td>
<td id="_1b15394b-222a-941d-b9a1-8a581b60c6ad" valign="top" align="left">3</td>
</tr><tr id="_236b79a5-8690-8749-728c-48bacec722c3"><td id="_dc8a2f93-6e0c-e9ff-292c-b7c560ca42d2" valign="top" align="left"><tt>TENSOR</tt></td>
<td id="_8cf08681-b61a-4207-3986-4213e09332c0" valign="top" align="left">4</td>
</tr><tr id="_0b178d23-996e-1b54-c924-c482015f8e8d"><td id="_f42afdd8-47d7-0679-a07f-b72b3b465956" valign="top" align="left"><tt>GRAPH</tt></td>
<td id="_e938e5af-146d-b098-f2d2-841958da220f" valign="top" align="left">5</td>
</tr><tr id="_577bc83e-bb92-54d1-99ab-1c3d8d2a358c"><td id="_0e76e31c-f04d-916a-62c6-c12dd19ffb5a" valign="top" align="left"><tt>SPARSE_TENSOR</tt></td>
<td id="_321c50db-7e0a-4213-a4b4-e191311bcd1c" valign="top" align="left">11</td>
</tr><tr id="_6daf0cd7-bbe9-c859-4430-089c583f516c"><td id="_9c1b8593-c14c-e72a-c920-bb74e3547313" valign="top" align="left"><tt>TYPE_PROTO</tt></td>
<td id="_a44e2c4c-e328-49be-391b-303cc2ce19a6" valign="top" align="left">13</td>
</tr><tr id="_5f756b89-8f92-fb99-5351-0bc45669f7c7"><td id="_39225cf4-4a84-ba48-3537-0f1ef098a12e" valign="top" align="left"><tt>FLOATS</tt></td>
<td id="_92101a9e-42ce-95fc-6229-75cfbf78122c" valign="top" align="left">6</td>
</tr><tr id="_d499be24-ae3b-2c5e-93c2-882005aebaa2"><td id="_1420c4a9-b49c-e375-fc1e-c26f67b0e89d" valign="top" align="left"><tt>INTS</tt></td>
<td id="_00d43712-703a-9e7a-602b-75181d70de03" valign="top" align="left">7</td>
</tr><tr id="_c6a9ee6b-b547-1907-45a9-03c82c0ddbcb"><td id="_019a717f-ea91-9855-f791-74306c9e8112" valign="top" align="left"><tt>STRINGS</tt></td>
<td id="_ecc6bd17-5ac0-2697-45e4-8b43f63a43c4" valign="top" align="left">8</td>
</tr><tr id="_653096d6-6137-3295-bcd3-fc7f651511b7"><td id="_ce6a77b3-9071-1c5f-3bf1-48e9c7a6944c" valign="top" align="left"><tt>TENSORS</tt></td>
<td id="_e50c5cf4-de6a-e724-d48d-93125263863e" valign="top" align="left">9</td>
</tr><tr id="_f7ddd30d-47f3-51d1-2314-f9ec1ba7889d"><td id="_862d00b7-0a15-4c57-5adc-493bf349339b" valign="top" align="left"><tt>GRAPHS</tt></td>
<td id="_7492349b-3148-d11d-a05b-29cdf6fb7bad" valign="top" align="left">10</td>
</tr><tr id="_77fb6a1f-0e52-83bc-6121-289df46cd4c7"><td id="_eb638637-9ca3-dbeb-1c4f-2abd86363da2" valign="top" align="left"><tt>SPARSE_TENSORS</tt></td>
<td id="_2ce96ea7-ce86-1603-6d1e-8c0c08070e07" valign="top" align="left">12</td>
</tr><tr id="_b54eb1d5-d475-cdd0-bad3-01fd61ebadcf"><td id="_b3451b8e-db1d-5b0f-4229-6c6ffbc0fe53" valign="top" align="left"><tt>TYPE_PROTOS</tt></td>
<td id="_e70eb0f4-0926-cde7-fb25-61c0d13b1e13" valign="top" align="left">14</td>
</tr></tbody>
</table>
</clause>

<clause id="_408ba30a-aa10-14d2-e357-c7b55b936a0d" anchor="schema-valueinfoproto" obligation="normative">
<title id="_ca88e36c-18f8-6982-9b07-e4447357349b">ValueInfoProto</title>
<table id="_7ff6eeb0-cfa4-45e2-5e5c-1d101bb646f0" anchor="tbl-schema-valueinfoproto"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_a1b04068-6e0e-3835-b4ad-db2cf16cb783">Fields of <tt>ValueInfoProto</tt></name>
<thead><tr id="_e6127b8a-6d10-5c39-9ee4-554fc1cfb0c9"><th id="_55dc4cb4-9a83-812f-d9b1-1fdf72796eef" valign="top" align="left">Field</th>
<th id="_5981f131-2ce5-45f6-e83e-68ac57ccdef4" valign="top" align="left">Tag</th>
<th id="_5e30c575-fe9c-721f-6b38-cf16288cd6f9" valign="top" align="left">Wire type</th>
<th id="_79e1efff-71f2-bec8-1d93-6474dc7130a6" valign="top" align="left">Type</th>
<th id="_d70d8411-199c-bd6d-d752-ed2d4ab3ca1e" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_c99054fd-4735-ad65-de7b-b665bb385a3e"><td id="_6d4bdddb-bb46-8e01-fe04-5f742a325396" valign="top" align="left"><tt>name</tt></td>
<td id="_cfbaa3e5-761c-97aa-a5ab-fc21d79ec2a7" valign="top" align="left">1</td>
<td id="_55d9d5d5-232c-49c8-ab9b-0dc79175b7a4" valign="top" align="left">2</td>
<td id="_2101a499-124c-f09d-b02d-12e33971a56e" valign="top" align="left"><tt>string</tt></td>
<td id="_699c00b3-4ac4-0ab4-1bdb-533325483245" valign="top" align="left">mandatory</td>
</tr><tr id="_753c71cb-227b-c717-219a-b90a78c9f244"><td id="_bc4154c0-f492-809f-53b7-255f69e46685" valign="top" align="left"><tt>type</tt></td>
<td id="_94992037-99b7-26e9-2be7-6554b4748014" valign="top" align="left">2</td>
<td id="_6f4eae3a-5942-d809-b523-5f544a98e292" valign="top" align="left">2</td>
<td id="_887aeb75-ac6a-3757-eca3-9147690afa8e" valign="top" align="left"><tt>TypeProto</tt></td>
<td id="_ed9bfc32-098c-9da8-7069-5deb8294da80" valign="top" align="left">mandatory</td>
</tr><tr id="_e2edd964-113a-502c-fb1a-eda2b3c3b7fc"><td id="_0e203c78-1cce-f311-e606-6dd033520802" valign="top" align="left"><tt>doc_string</tt></td>
<td id="_a10f4b9c-0650-61a3-623d-2be91ea98c6c" valign="top" align="left">3</td>
<td id="_6c929c00-77dc-99f6-f6e5-2342bf8fefda" valign="top" align="left">2</td>
<td id="_e5cba26c-16d6-fe40-0d3e-a57fb563aa4b" valign="top" align="left"><tt>string</tt></td>
<td id="_e1c0304b-10f3-242f-b8dc-0e61b92c0c7d" valign="top" align="left">optional</td>
</tr><tr id="_ab8b5fef-9448-83da-492f-2768e86bb628"><td id="_dfb17c95-74a7-6644-9b35-d6152ddb1faf" valign="top" align="left"><tt>metadata_props</tt></td>
<td id="_603b6d85-1d29-be43-225e-4cc7e5412a49" valign="top" align="left">4</td>
<td id="_b5175adf-fb82-33a6-8b38-f611f0ddd88e" valign="top" align="left">2</td>
<td id="_c3e13408-6fac-84e8-d493-e0b9e8673b07" valign="top" align="left"><tt>StringStringEntryProto</tt></td>
<td id="_1b5091e4-fcac-406c-0c15-fe026f3801cf" valign="top" align="left">repeated</td>
</tr></tbody>
</table>
</clause>

<clause id="_c37081b6-526f-cd17-91be-c4aac33c4469" anchor="schema-nodeproto" obligation="normative">
<title id="_9599404d-cfe2-c72c-e5bf-9a0d6f1ad171">NodeProto</title>
<table id="_a121486c-1633-feaa-d794-fd77266cace2" anchor="tbl-schema-nodeproto"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_725c535e-c031-4493-678f-5826a9c108c7">Fields of <tt>NodeProto</tt></name>
<thead><tr id="_bd54bbcc-0e43-bb50-137b-182a06b501c0"><th id="_e2a0a89d-5858-39db-abba-2da4748fdc4a" valign="top" align="left">Field</th>
<th id="_cbab423c-5861-6acf-7527-d2f74cd7b255" valign="top" align="left">Tag</th>
<th id="_d56c1f13-664f-4dd6-3027-5d2a42320954" valign="top" align="left">Wire type</th>
<th id="_a18961d9-0bfa-9aa7-9340-a141facc030f" valign="top" align="left">Type</th>
<th id="_bf051743-206c-df9d-d3e7-6175d4668b5b" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_beaf1f0f-160d-0bf9-ca4b-0d257bb60774"><td id="_54240521-668b-3027-40b1-51438dcdddc8" valign="top" align="left"><tt>input</tt></td>
<td id="_be7fe377-d55b-9ccb-3bca-d8fc99661aec" valign="top" align="left">1</td>
<td id="_9d8a90a8-4687-2bf0-779c-5891547e0c52" valign="top" align="left">2</td>
<td id="_aa17303c-60c4-d18e-146b-cd43d7d645bb" valign="top" align="left"><tt>string</tt></td>
<td id="_b109ed08-d6da-06ea-c288-e3c82501a0fa" valign="top" align="left">repeated</td>
</tr><tr id="_508f3249-5f38-19ce-f4e4-29d3f85a2a36"><td id="_2accf21b-e816-1bd4-83da-50189a9db7d5" valign="top" align="left"><tt>output</tt></td>
<td id="_713e809a-f008-f825-9173-4b866afc9382" valign="top" align="left">2</td>
<td id="_464a8bd9-ef18-92d9-6063-0420e5ac33ea" valign="top" align="left">2</td>
<td id="_1509c251-1b71-0d9a-e38c-8cd9a7a407f5" valign="top" align="left"><tt>string</tt></td>
<td id="_6cfbe169-a312-2807-7bb2-744adbd210ad" valign="top" align="left">repeated</td>
</tr><tr id="_1f0d19ee-8b31-3c5d-c577-0f62cc6e7ccd"><td id="_0c78f0a3-7fdb-a78b-c7cf-88db72f7d833" valign="top" align="left"><tt>name</tt></td>
<td id="_44eeb32c-d86c-4430-da4d-edf4de290709" valign="top" align="left">3</td>
<td id="_7dcd1b20-38f0-0705-9e43-6b3b4f89d74b" valign="top" align="left">2</td>
<td id="_f863fa40-4739-1855-633e-7b9e3c0ddcee" valign="top" align="left"><tt>string</tt></td>
<td id="_ecabbd22-701c-4e87-0097-8ddee3c1ffe8" valign="top" align="left">optional</td>
</tr><tr id="_541c12c6-9d30-1779-7e98-278e3ee0944f"><td id="_20fb6168-e0ac-d79f-5d13-9e3dd9254032" valign="top" align="left"><tt>op_type</tt></td>
<td id="_33d2c3ed-430c-f843-63c3-be0b905ec4e7" valign="top" align="left">4</td>
<td id="_96c1db01-79ed-aa2f-6fe0-cea07d8c990b" valign="top" align="left">2</td>
<td id="_11b64b8c-bb34-7dd6-a68c-c73874d8e129" valign="top" align="left"><tt>string</tt></td>
<td id="_d893709c-048e-413b-5fd4-c2bc96a15eb3" valign="top" align="left">optional</td>
</tr><tr id="_738b91e2-adce-a28f-98c1-2c2bdbc4bccb"><td id="_103807b5-ed35-42f8-70cb-81584de1db43" valign="top" align="left"><tt>domain</tt></td>
<td id="_0d3d950a-35c9-a3c0-7f4b-2e5d2c7c8850" valign="top" align="left">7</td>
<td id="_cb5873b9-e658-f332-c6c8-52029fd1ebda" valign="top" align="left">2</td>
<td id="_32de75cf-4218-73ca-93db-bef5f5f35b2e" valign="top" align="left"><tt>string</tt></td>
<td id="_d63a7996-417c-e957-ea50-d5f4dc0ea153" valign="top" align="left">optional</td>
</tr><tr id="_e51d4d74-58d9-df7f-26a8-d687e7afc492"><td id="_df49adaa-b19f-2e71-6290-e4eb533177ad" valign="top" align="left"><tt>overload</tt></td>
<td id="_2382c243-c8db-fc8d-f60e-f7513a0561c7" valign="top" align="left">8</td>
<td id="_6576cb28-bd0b-c248-0850-2db8a8753556" valign="top" align="left">2</td>
<td id="_0edb1efd-33df-ee66-b989-77d08516b675" valign="top" align="left"><tt>string</tt></td>
<td id="_0be77b69-44bd-6426-cf9c-d7d21f9581ba" valign="top" align="left">optional</td>
</tr><tr id="_eb1ad9eb-d087-0fb8-449f-6dc448fb5305"><td id="_5b54a2ca-8dc1-10c6-77b2-ab49ac14bab9" valign="top" align="left"><tt>attribute</tt></td>
<td id="_f26f1c6f-f8c8-e9b6-5a27-8fcb7c7f4ef8" valign="top" align="left">5</td>
<td id="_78db2f1d-f647-33ab-9b16-d00610c6441d" valign="top" align="left">2</td>
<td id="_adb35f30-de69-9cfe-ae88-665fac2f5fbb" valign="top" align="left"><tt>AttributeProto</tt></td>
<td id="_e045f442-5167-74f0-4ddd-616981141884" valign="top" align="left">repeated</td>
</tr><tr id="_6131fbf3-8f7d-a5a5-7f35-95f73dbd84c1"><td id="_50a0968d-0fa2-c3a8-b564-3b1bf3cc4d42" valign="top" align="left"><tt>doc_string</tt></td>
<td id="_0d05f946-1c52-eabb-9b12-80a6a65e2009" valign="top" align="left">6</td>
<td id="_2dbf3ce9-6da3-c98c-dce5-209f04646999" valign="top" align="left">2</td>
<td id="_c95cabfa-ab49-210e-348e-e902135c742d" valign="top" align="left"><tt>string</tt></td>
<td id="_65f2f0ee-241e-4046-936b-c16e6ba888ca" valign="top" align="left">optional</td>
</tr><tr id="_dbb67855-888e-6873-0a5c-1bdd3ada3ea3"><td id="_79c0e3f7-43e4-dba2-cf5f-0803efd1cbe1" valign="top" align="left"><tt>metadata_props</tt></td>
<td id="_3b2173c6-38a3-5e84-3d1c-0659e9969a16" valign="top" align="left">9</td>
<td id="_01883779-f3b3-b176-d71d-077a907df7d4" valign="top" align="left">2</td>
<td id="_948b9335-2457-2934-6bbd-a7f90b5fb0c0" valign="top" align="left"><tt>StringStringEntryProto</tt></td>
<td id="_d966b1f3-1a4d-0677-c61d-debf3ecf5b76" valign="top" align="left">repeated</td>
</tr><tr id="_f4e36a0f-a3e7-e1d1-ee25-cdd17f9f4c2d"><td id="_fc83dcd7-d1dd-eb26-d7e5-2e31f2f4d922" valign="top" align="left"><tt>device_configurations</tt></td>
<td id="_e115d393-2fcb-2c98-bd7a-47dc613a9a84" valign="top" align="left">10</td>
<td id="_1fd6719e-4cef-cdbb-cd4a-8d0b6c7d5655" valign="top" align="left">2</td>
<td id="_7da73157-78ba-416f-d85c-d759903b58d1" valign="top" align="left"><tt>NodeDeviceConfigurationProto</tt></td>
<td id="_ef3889a4-3fe3-10d4-732f-3b5bc0c120d2" valign="top" align="left">repeated</td>
</tr></tbody>
</table>
</clause>

<clause id="_0345e03b-061e-070f-fcaa-9bb29422fdb9" anchor="schema-intintlistentryproto" obligation="normative">
<title id="_b00c85ad-1265-878c-182b-d6f08c954581">IntIntListEntryProto</title>
<table id="_757e269d-aed5-fea3-07d0-695069f34f89" anchor="tbl-schema-intintlistentryproto"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_6b9ee69e-70f5-999e-55fd-78363c01fd96">Fields of <tt>IntIntListEntryProto</tt></name>
<thead><tr id="_d26247b1-8124-e11e-2b98-54bde71f3d3a"><th id="_c3361723-7530-a8a6-e071-20c77fcff1ce" valign="top" align="left">Field</th>
<th id="_f1d5f9b6-01f7-bba5-6b43-0e132a8498de" valign="top" align="left">Tag</th>
<th id="_917db18d-8121-3429-3038-fc181db7b63c" valign="top" align="left">Wire type</th>
<th id="_d049b8d4-40cc-4a82-91f4-8ea7da4a6018" valign="top" align="left">Type</th>
<th id="_7cc74441-0cbb-3890-30d6-c090e0f3e562" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_915b7ffa-fd78-3284-1493-93ba540f6a6e"><td id="_fdf36ffa-4adb-036e-ba0b-ca8af2e0ea19" valign="top" align="left"><tt>key</tt></td>
<td id="_f30be5f8-9774-ff8d-f0c5-e6af73023e9a" valign="top" align="left">1</td>
<td id="_19f69b51-a424-5bb7-3902-ac74e8a9feac" valign="top" align="left">0</td>
<td id="_ffab37e2-685b-55cc-f5de-3b0610980e5d" valign="top" align="left"><tt>int64</tt></td>
<td id="_5e215500-7aec-b573-85f1-fa0f1ff4d3fc" valign="top" align="left">optional</td>
</tr><tr id="_0aafa26a-2f67-0dd1-5a48-c40c3e9371c5"><td id="_d4911bdd-b328-7402-6332-5d0f37042650" valign="top" align="left"><tt>value</tt></td>
<td id="_e9d2aa82-796b-c330-554f-ff8d03192925" valign="top" align="left">2</td>
<td id="_49ff7e75-4b6d-c86d-2941-ae80c9694537" valign="top" align="left">0</td>
<td id="_2b502333-862e-f5a6-7543-4f318e1949dc" valign="top" align="left"><tt>int64</tt></td>
<td id="_9bd3dd92-f7b0-cf1a-e0b9-bf647705ef21" valign="top" align="left">repeated</td>
</tr></tbody>
</table>
</clause>

<clause id="_acfd64ae-dd03-c25c-aae6-f43930431f4c" anchor="schema-nodedeviceconfigurationproto" obligation="normative">
<title id="_a2cfb4ed-893a-c1c1-32ba-dcb3ad782bec">NodeDeviceConfigurationProto</title>
<table id="_a316acf1-5fb9-41f0-8cd6-6b3d22a26036" anchor="tbl-schema-nodedeviceconfigurationproto"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_18970b3f-8357-0a3d-3cf4-bd9b664aa4c2">Fields of <tt>NodeDeviceConfigurationProto</tt></name>
<thead><tr id="_2d9e8d04-2d1d-7e7c-8e49-4c6c7e866d50"><th id="_4cb79119-1fd2-a8fd-f014-4a559e5c87a0" valign="top" align="left">Field</th>
<th id="_8e80a091-0c67-66b8-0668-40d157b19a64" valign="top" align="left">Tag</th>
<th id="_a2602f05-edf4-49f9-2937-adf6ac85729f" valign="top" align="left">Wire type</th>
<th id="_c57516f6-29bb-ccac-7761-b87d1697c2fb" valign="top" align="left">Type</th>
<th id="_af2b1040-579b-3afe-e60e-b2a6de8feedd" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_11004657-40c2-4b94-9d72-1aa2f29d191b"><td id="_4d411f35-be9a-ff75-448b-3d14c63023c4" valign="top" align="left"><tt>configuration_id</tt></td>
<td id="_9e12615f-1d9e-a777-79fc-40e2f6871f14" valign="top" align="left">1</td>
<td id="_d4116fb5-fb23-a4bf-ee2c-b429cfb84d47" valign="top" align="left">2</td>
<td id="_3efb3aca-8029-a415-fe07-141fc0749dda" valign="top" align="left"><tt>string</tt></td>
<td id="_4f115eec-d479-2d99-2d97-66fe703178bf" valign="top" align="left">mandatory</td>
</tr><tr id="_c82ba134-4495-f60b-d9e5-1e92cbfb6f06"><td id="_e29e4fa7-ed52-ebf3-50f2-c4e8db421f75" valign="top" align="left"><tt>sharding_spec</tt></td>
<td id="_a1aaca9e-b811-92b7-7363-6aea601612e9" valign="top" align="left">2</td>
<td id="_e1527c44-f075-8786-0d37-d7628ab282f6" valign="top" align="left">2</td>
<td id="_08e3b1d9-a871-ebe0-23ee-f3ceb2ee8837" valign="top" align="left"><tt>ShardingSpecProto</tt></td>
<td id="_f169fcd4-1987-ddbf-46f7-b7ef0fd35d5c" valign="top" align="left">repeated</td>
</tr><tr id="_e4243ac5-9ec0-d95b-daf0-0ab25b8f39b7"><td id="_4d3bab87-863c-15d8-cbfa-90b666ac93f4" valign="top" align="left"><tt>pipeline_stage</tt></td>
<td id="_555be643-ce35-4e7f-a4bb-adf960255704" valign="top" align="left">3</td>
<td id="_2a48ed1d-8a7a-2fcd-2ca2-40a78c120d18" valign="top" align="left">0</td>
<td id="_2450de87-9283-a0da-c9e0-e34df276a403" valign="top" align="left"><tt>int32</tt></td>
<td id="_0fafcbdd-8d6f-cb20-596e-06b099269ad6" valign="top" align="left">optional</td>
</tr></tbody>
</table>
</clause>

<clause id="_41775f67-c4b5-9025-3418-b6b3a26ea938" anchor="schema-shardingspecproto" obligation="normative">
<title id="_d0cf8db5-00fa-29a6-66ae-eeb62ac4b403">ShardingSpecProto</title>
<table id="_88ca3f7d-8d05-e127-994f-ef4f01e10f5a" anchor="tbl-schema-shardingspecproto"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_acb6f507-3ff7-6636-8003-be6a1a9326b8">Fields of <tt>ShardingSpecProto</tt></name>
<thead><tr id="_ed5c0962-c608-61f1-7b96-3f60940948e5"><th id="_e4685db2-5e0b-813d-f71e-76739e55e74b" valign="top" align="left">Field</th>
<th id="_a228e117-9b92-9486-b34d-52c43b335884" valign="top" align="left">Tag</th>
<th id="_79557b28-bfa3-4eb6-bfb6-a63923c9618a" valign="top" align="left">Wire type</th>
<th id="_419ec9d7-4e65-c4e2-5478-bedcd65a8e2c" valign="top" align="left">Type</th>
<th id="_a7d603c6-d66c-6804-43dc-cd03229e67a6" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_fdca2a30-0bff-40fb-8070-1c6bda12ae2b"><td id="_2bef7be7-dd8e-c2e9-6906-34a293143b11" valign="top" align="left"><tt>tensor_name</tt></td>
<td id="_14fee396-060c-28d5-b61a-ef46197e2351" valign="top" align="left">1</td>
<td id="_13f60adf-c10a-4d54-526e-fc1f26637020" valign="top" align="left">2</td>
<td id="_4c5c5c2a-30b5-156c-322c-ede784268f9b" valign="top" align="left"><tt>string</tt></td>
<td id="_436f3136-fb89-cfd8-9117-fc192d69a9e6" valign="top" align="left">mandatory</td>
</tr><tr id="_0130d28c-a974-1250-d969-975c77e16848"><td id="_261a1538-63ee-e33c-195a-10073b8abb6e" valign="top" align="left"><tt>device</tt></td>
<td id="_8f850940-4938-2b2d-4f4b-3f67dff35631" valign="top" align="left">2</td>
<td id="_ac1c45f1-95b7-1b42-dbcf-a2ffb8e08ebb" valign="top" align="left">0</td>
<td id="_91108ec4-00a9-d99a-016c-6cf5c8835b89" valign="top" align="left"><tt>int64</tt></td>
<td id="_8c3d0fe8-7e8d-bcb0-b562-206782166d07" valign="top" align="left">repeated</td>
</tr><tr id="_ca120ca4-0946-8a74-0f5f-852a78079e22"><td id="_c4f2d261-e038-e81d-ccf0-91891c48c461" valign="top" align="left"><tt>index_to_device_group_map</tt></td>
<td id="_76ac8ccc-c0c4-6b47-a853-3ae311466bac" valign="top" align="left">3</td>
<td id="_3e348dc7-2224-c24b-80eb-4c6c86740bc9" valign="top" align="left">2</td>
<td id="_15bc0be0-7146-edba-3534-7caa52da5464" valign="top" align="left"><tt>IntIntListEntryProto</tt></td>
<td id="_c4ac3df9-0e58-4958-dc00-88ba44d8c0df" valign="top" align="left">repeated</td>
</tr><tr id="_a712a7ba-53bf-ad91-1367-39f4b6c89b74"><td id="_3f10036b-f352-5d4f-926c-55ef0fc70cda" valign="top" align="left"><tt>sharded_dim</tt></td>
<td id="_6761f97a-804c-e67c-04ec-e2c69854ac61" valign="top" align="left">4</td>
<td id="_64611367-7575-26d3-0312-c84b42df89fe" valign="top" align="left">2</td>
<td id="_9d04016a-9d5b-5193-76fb-ba5e7ab805cf" valign="top" align="left"><tt>ShardedDimProto</tt></td>
<td id="_f878194e-dc08-9baf-1aeb-786ddf20486a" valign="top" align="left">repeated</td>
</tr></tbody>
</table>
</clause>

<clause id="_b08953ce-d282-8c1f-e6e5-c0528163428c" anchor="schema-shardeddimproto" obligation="normative">
<title id="_b909fb08-f753-8a77-d0c3-667588eed5e0">ShardedDimProto</title>
<table id="_af1cd257-c307-fb77-be03-2f6896349400" anchor="tbl-schema-shardeddimproto"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_c61d9c8b-1e93-1128-99a8-2aba40374ace">Fields of <tt>ShardedDimProto</tt></name>
<thead><tr id="_86a3d42c-7de8-75fd-b313-1bb49f68010a"><th id="_98214da7-bf0a-1f40-1b15-3abfbd7bd6f3" valign="top" align="left">Field</th>
<th id="_8a523983-3c52-fdc3-5e58-d8678cda8f86" valign="top" align="left">Tag</th>
<th id="_594bdbcc-3a96-8745-70e8-7a38005be3da" valign="top" align="left">Wire type</th>
<th id="_2c542d5b-8273-2dee-5723-bd1c86d6b414" valign="top" align="left">Type</th>
<th id="_9f9280b8-2cc0-9cda-c0fd-8d8105302836" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_2385ce20-477e-b3ee-7715-2ff64d575995"><td id="_5a73c3ad-0b9f-d278-d547-451a35f3240e" valign="top" align="left"><tt>axis</tt></td>
<td id="_c2402b1d-fe8a-a6e7-7e60-1f16ba66e25e" valign="top" align="left">1</td>
<td id="_6e10f2e3-06ce-e2de-52ab-512cfb261294" valign="top" align="left">0</td>
<td id="_f721b8e8-2f9d-aa18-85a3-3ace21cc7926" valign="top" align="left"><tt>int64</tt></td>
<td id="_85ed1798-5a92-9217-2b76-ebdc39251acd" valign="top" align="left">mandatory</td>
</tr><tr id="_d674e64f-43b7-c81e-497b-aa4f5f7de5f6"><td id="_eaf818b7-88b1-38e9-c3e1-6bdd8ebccfbc" valign="top" align="left"><tt>simple_sharding</tt></td>
<td id="_da94141c-de5d-1ec6-ed94-7bc36eda254b" valign="top" align="left">2</td>
<td id="_e98952aa-1fe1-7f4f-d6e2-42432db606e4" valign="top" align="left">2</td>
<td id="_23ea4dee-7118-9af5-12b8-8d43c76a8714" valign="top" align="left"><tt>SimpleShardedDimProto</tt></td>
<td id="_7fac73ef-f678-29f9-eea3-54707343e5d1" valign="top" align="left">repeated</td>
</tr></tbody>
</table>
</clause>

<clause id="_d8961001-79e2-4526-0f58-4b9d7440c682" anchor="schema-simpleshardeddimproto" obligation="normative">
<title id="_8280c206-3e40-6623-0def-d689c5569676">SimpleShardedDimProto</title>
<table id="_8a17fe5a-02ad-fc5f-804a-275132f9a5d2" anchor="tbl-schema-simpleshardeddimproto"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_f27bec63-193b-9676-aafb-b362b6cedd1e">Fields of <tt>SimpleShardedDimProto</tt></name>
<thead><tr id="_3b0a16ff-94ae-fa1f-4b37-52ca7300c60f"><th id="_95ce99a4-c61c-b42e-e3da-727a5026fcd3" valign="top" align="left">Field</th>
<th id="_775ed208-9440-6ae3-fde4-6891e26ccbdf" valign="top" align="left">Tag</th>
<th id="_8a9be523-2a4c-e4ac-ddf4-dc8de75b67a1" valign="top" align="left">Wire type</th>
<th id="_7e1207e3-35b9-8caf-baf4-82f0b6cec99f" valign="top" align="left">Type</th>
<th id="_052750a3-8014-79ac-e7ca-9750f8676c70" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_95fe79af-b7af-2b1c-48a9-72eca5bafbd6"><td id="_33fc6e58-ffed-9cdb-1b50-86f581c341bd" valign="top" align="left"><tt>dim_value</tt></td>
<td id="_5167ad61-1767-da9b-40fd-b12316a66e65" valign="top" align="left">1</td>
<td id="_37ea06f6-9842-cc9d-a417-d28e6ff92a10" valign="top" align="left">0</td>
<td id="_fda5c907-7a8a-8d38-01cb-91dc7c78c497" valign="top" align="left"><tt>int64</tt></td>
<td id="_1cc85419-92dc-5102-3818-fcca0c175d41" valign="top" align="left">one of the group</td>
</tr><tr id="_602c5ca6-6685-2dfb-b445-8bf724d0ca23"><td id="_fa12f3ad-2d3d-d3c6-9ca4-31b5419c85fe" valign="top" align="left"><tt>dim_param</tt></td>
<td id="_00266038-2866-8248-831f-8756b8e56c24" valign="top" align="left">2</td>
<td id="_83bc87f0-6968-6529-11a9-61ca78f56a00" valign="top" align="left">2</td>
<td id="_27b8c7c2-06d0-1b32-f46f-6e30616d0c42" valign="top" align="left"><tt>string</tt></td>
<td id="_5784fe58-a822-ed83-052e-ded065491b4c" valign="top" align="left">one of the group</td>
</tr><tr id="_65ac5d07-f2df-1ea4-7f84-3558c68a6f23"><td id="_0d59f930-77ea-e1b9-e087-f048a42e7ec9" valign="top" align="left"><tt>num_shards</tt></td>
<td id="_fbc66f22-cfa5-f813-ffd0-ea3b85057d0a" valign="top" align="left">3</td>
<td id="_17c6410f-febb-b75c-1de1-96b35dc40b68" valign="top" align="left">0</td>
<td id="_671abc88-9b01-381f-f708-d16fd6c66d5a" valign="top" align="left"><tt>int64</tt></td>
<td id="_5cb0dd33-86fb-ef44-bbfb-30361f23e5d2" valign="top" align="left">mandatory</td>
</tr></tbody>
</table>

<p id="_8fae4e73-3815-b404-4474-e5c5c6173575">Exactly one of <tt>dim_value</tt>, <tt>dim_param</tt> SHALL be present, being the group <tt>dim</tt>.</p>
</clause>

<clause id="_759ae2ce-c215-434d-8d9d-a240ebbc3b15" anchor="schema-traininginfoproto" obligation="normative">
<title id="_798e4244-b989-a5f8-42e5-80531fbe00fa">TrainingInfoProto</title>
<table id="_ad3b9b33-d805-d059-4add-3df0f18b96fe" anchor="tbl-schema-traininginfoproto"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_1742af06-c193-387b-3bcb-e189a607b18e">Fields of <tt>TrainingInfoProto</tt></name>
<thead><tr id="_07fe8601-d851-421c-55df-da4c203f94af"><th id="_91c5b384-763b-8823-9da8-1249a0ed9389" valign="top" align="left">Field</th>
<th id="_62702940-a71f-f43d-e100-178d962a37d3" valign="top" align="left">Tag</th>
<th id="_bce052da-a869-1675-122b-117612fc7ef8" valign="top" align="left">Wire type</th>
<th id="_101d04fa-e6f0-3cd3-7561-6205472012e3" valign="top" align="left">Type</th>
<th id="_862c7359-9570-c9b8-de3d-c6a19e49e89b" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_05a85b45-e31f-f5bd-16d7-043920f2c0c9"><td id="_d579b12d-bb26-e350-c60f-5ed7379d0895" valign="top" align="left"><tt>initialization</tt></td>
<td id="_1c54a3ec-d893-6984-ede8-c99e4b65ab3a" valign="top" align="left">1</td>
<td id="_2d12c49d-28bc-565b-38f8-0cb9578c6768" valign="top" align="left">2</td>
<td id="_7022ab09-f6c7-d5a4-e787-c62ca3eed9b4" valign="top" align="left"><tt>GraphProto</tt></td>
<td id="_ed24b3ed-9a8b-794e-ab40-2f600677c297" valign="top" align="left">optional</td>
</tr><tr id="_992103a1-4c2e-e268-d358-9681aee24148"><td id="_b8e412a5-d9fb-7bd4-1d69-6968616da9e1" valign="top" align="left"><tt>algorithm</tt></td>
<td id="_155d7c58-87a4-0b20-74ae-b946d8d071de" valign="top" align="left">2</td>
<td id="_28b1513a-3b53-a992-2957-e8c406c402b7" valign="top" align="left">2</td>
<td id="_926d0406-fa8c-4b10-27d2-0eeaa932a7b8" valign="top" align="left"><tt>GraphProto</tt></td>
<td id="_334f4b6e-e9e2-c37d-478e-84956e651438" valign="top" align="left">optional</td>
</tr><tr id="_5c9c25d9-cbfa-3be2-a41f-2cf1d596a0e7"><td id="_6034fee5-c862-de6f-dec3-45a7faa8553a" valign="top" align="left"><tt>initialization_binding</tt></td>
<td id="_0e4c2114-6e32-474f-f24c-6905ced7633a" valign="top" align="left">3</td>
<td id="_aac24cc5-bf92-bae5-1c93-874500faa630" valign="top" align="left">2</td>
<td id="_f6150899-906e-38a4-7551-356f37a98ec6" valign="top" align="left"><tt>StringStringEntryProto</tt></td>
<td id="_7411b409-b8d3-897c-373c-46c7e54fe320" valign="top" align="left">repeated</td>
</tr><tr id="_88e337d8-8bda-0c3e-6eab-419a21782919"><td id="_54ef202d-03a3-b864-0497-49d18b409beb" valign="top" align="left"><tt>update_binding</tt></td>
<td id="_160cee03-b3fc-688f-81d9-8372639a9316" valign="top" align="left">4</td>
<td id="_8ed2d177-976e-b91a-6918-dedb65a0843c" valign="top" align="left">2</td>
<td id="_f0802499-e7f8-4794-b03e-12fe35a9d500" valign="top" align="left"><tt>StringStringEntryProto</tt></td>
<td id="_5cdabb1e-8df5-56cd-7558-f1df2d6fadd5" valign="top" align="left">repeated</td>
</tr></tbody>
</table>
</clause>

<clause id="_74a6c454-94a9-8707-c883-7ce4d7c237d7" anchor="schema-modelproto" obligation="normative">
<title id="_0a0a06eb-7ecd-3195-ee67-edb1d5019aa5">ModelProto</title>
<table id="_dd089fd4-b3c4-3b1d-c285-5af4617d57e4" anchor="tbl-schema-modelproto"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_2d8e692f-f10b-c26b-0fa3-c853b15f5b16">Fields of <tt>ModelProto</tt></name>
<thead><tr id="_15650377-6300-3ea4-a414-4b753e7d7f15"><th id="_4b803b5b-5fa8-a2ef-218b-d91c107f887d" valign="top" align="left">Field</th>
<th id="_7bb8f4fb-46a1-096f-ce86-3b0a6f0e4d24" valign="top" align="left">Tag</th>
<th id="_fbd3e673-e952-c4ee-2ccd-09dcb060099f" valign="top" align="left">Wire type</th>
<th id="_85972a2e-ff10-da64-3ba3-4b1765d94e14" valign="top" align="left">Type</th>
<th id="_283fcfc5-f98a-15a6-710d-a3d8c8381b04" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_5e18c8ca-467d-1c3c-33d9-c61cfca2ebe2"><td id="_e3a8ea60-7cdc-a30d-efb0-6ef188276ced" valign="top" align="left"><tt>ir_version</tt></td>
<td id="_e81529ac-1e54-c230-0cba-b458c8f0cc40" valign="top" align="left">1</td>
<td id="_51495536-e18c-ede3-6ce6-bbc063ae89e6" valign="top" align="left">0</td>
<td id="_68d407b7-6bea-0117-23ff-5ee3870b1c2c" valign="top" align="left"><tt>int64</tt></td>
<td id="_2cf2de3f-c10b-f21f-a53d-d57503d86d6c" valign="top" align="left">optional</td>
</tr><tr id="_895ceda6-0a6a-9c10-e3a8-175440e80bf2"><td id="_5c556b06-0006-d58c-6179-8e8297063eb8" valign="top" align="left"><tt>opset_import</tt></td>
<td id="_eed7b07f-8291-e3f1-cafb-b77fdcb0a3cb" valign="top" align="left">8</td>
<td id="_b6c6de35-2338-016e-f377-f27b48598034" valign="top" align="left">2</td>
<td id="_d3cfaa9e-2f0c-8bdf-5360-7a6d81c2b9b0" valign="top" align="left"><tt>OperatorSetIdProto</tt></td>
<td id="_577c3a28-21cb-60cb-22c6-9ce5d3f1b08a" valign="top" align="left">repeated</td>
</tr><tr id="_c8df3d3a-ae53-9e73-1e10-49c19ab8d5ad"><td id="_57cb11e8-48c9-61e2-cb58-09e27713dd03" valign="top" align="left"><tt>producer_name</tt></td>
<td id="_7c0e010d-d2e6-7f19-b27e-2104b4dd6845" valign="top" align="left">2</td>
<td id="_bba34ba6-0612-db42-e38b-d18500ee4654" valign="top" align="left">2</td>
<td id="_71afa297-3a80-07a2-27d3-d52aead032bc" valign="top" align="left"><tt>string</tt></td>
<td id="_a0f4eb98-e15d-8314-d067-eac706c2d761" valign="top" align="left">optional</td>
</tr><tr id="_186f96ab-175e-2301-b98f-e66dbb740e49"><td id="_7804cfdf-c942-901a-ef59-4a5b7da33cd1" valign="top" align="left"><tt>producer_version</tt></td>
<td id="_f5fbee83-578a-e6ca-057c-fed3dff53568" valign="top" align="left">3</td>
<td id="_cd47efef-2483-631f-8128-c08ae5068bdf" valign="top" align="left">2</td>
<td id="_e1119cb6-ea51-83b1-0737-24917139ca17" valign="top" align="left"><tt>string</tt></td>
<td id="_0c7105f3-92cf-2744-8148-bf39a750ab07" valign="top" align="left">optional</td>
</tr><tr id="_1a077f04-925d-c864-d2bb-5142a560d480"><td id="_452b75f2-50ca-9b7f-b565-cda049e53f29" valign="top" align="left"><tt>domain</tt></td>
<td id="_3b6db984-709e-dd2a-9b00-30ab7aae641b" valign="top" align="left">4</td>
<td id="_ce4f437e-e049-ef81-050b-a8874722ab33" valign="top" align="left">2</td>
<td id="_2a5c43f2-2f93-7e97-5b0b-5d970fa8470f" valign="top" align="left"><tt>string</tt></td>
<td id="_14fb495c-f502-985f-a9ed-830822dbe727" valign="top" align="left">optional</td>
</tr><tr id="_429fb8da-69b9-9741-f1a0-5204bf2510c5"><td id="_ccd63e6c-abfa-2699-6621-24bd94666095" valign="top" align="left"><tt>model_version</tt></td>
<td id="_441a2889-0a06-a1df-6424-14b19c24a403" valign="top" align="left">5</td>
<td id="_72d9a829-8bea-ce5b-efbc-2a58ee49e5d7" valign="top" align="left">0</td>
<td id="_44bd4a71-f8d9-60b0-cd70-155bcbcbf2e2" valign="top" align="left"><tt>int64</tt></td>
<td id="_d402b17c-4361-3855-3931-48df5c459c13" valign="top" align="left">optional</td>
</tr><tr id="_cbae0889-7e41-c7b5-4901-3cf7b710d1af"><td id="_c74d11f0-089c-ce91-b6cc-c664196b0524" valign="top" align="left"><tt>doc_string</tt></td>
<td id="_e8b6e02b-f8f8-5565-1c8c-0c484b07999e" valign="top" align="left">6</td>
<td id="_75a6c613-b77b-357b-044f-4f1562c85742" valign="top" align="left">2</td>
<td id="_f4456f82-e626-b046-750a-622cd517e34a" valign="top" align="left"><tt>string</tt></td>
<td id="_573182dc-4171-da5c-69c1-ab291c88a454" valign="top" align="left">optional</td>
</tr><tr id="_d72edd05-7df3-2e0c-d54f-4f01e59198ef"><td id="_7e8dc680-205e-15d5-b663-34cc68b7a9d1" valign="top" align="left"><tt>graph</tt></td>
<td id="_de9f5aa7-b17b-a9c6-eb74-fa5ae0344aa5" valign="top" align="left">7</td>
<td id="_4ec6c0f8-6f44-9481-1ecc-ddb77225b969" valign="top" align="left">2</td>
<td id="_8456dde9-0bf1-5637-fbb9-e28e0fb20cb1" valign="top" align="left"><tt>GraphProto</tt></td>
<td id="_53285c4e-389f-dcfa-ebf4-51a9e56ce1b9" valign="top" align="left">optional</td>
</tr><tr id="_9cca1613-ad69-ebae-0b7b-0f6f5546ec9d"><td id="_bf2e638c-0d65-ef40-eea4-2b6e67b40649" valign="top" align="left"><tt>metadata_props</tt></td>
<td id="_e229f11a-a672-1f52-c18b-55835d079dbc" valign="top" align="left">14</td>
<td id="_29931186-f2c7-8387-fa04-041d51bc1560" valign="top" align="left">2</td>
<td id="_e7c0d225-255c-0de3-ca0e-c6cc0fd98bd5" valign="top" align="left"><tt>StringStringEntryProto</tt></td>
<td id="_164807b0-47d7-2e51-be8c-8a757171c804" valign="top" align="left">repeated</td>
</tr><tr id="_8592c4c3-1a59-fbc3-30d9-dc823db6db43"><td id="_f48fcb52-9d1d-4d90-6e44-6d606147c43c" valign="top" align="left"><tt>training_info</tt></td>
<td id="_de8906d6-bb02-ad54-d44f-68d765708316" valign="top" align="left">20</td>
<td id="_fff69782-7479-62ca-aac2-94117dd92d92" valign="top" align="left">2</td>
<td id="_0e7d8afe-b0b5-4d99-49af-05ea1c393511" valign="top" align="left"><tt>TrainingInfoProto</tt></td>
<td id="_c82028db-706d-14bd-e0f7-6de8fdcb4bc1" valign="top" align="left">repeated</td>
</tr><tr id="_d73301c0-6783-f381-e3f9-3e91ae425031"><td id="_f9cff572-bd1a-cfaa-3abd-7cd7513bde93" valign="top" align="left"><tt>functions</tt></td>
<td id="_2d6d82a0-0d03-3762-ca8a-e1661fdae60c" valign="top" align="left">25</td>
<td id="_33a83b97-94cb-8879-6f5c-c33f96fa0e53" valign="top" align="left">2</td>
<td id="_0bfb0d08-4d64-660c-0176-9192a99df2a1" valign="top" align="left"><tt>FunctionProto</tt></td>
<td id="_f08b98e2-1475-e151-d9f1-d43379f90cb7" valign="top" align="left">repeated</td>
</tr><tr id="_01f2f3c6-acfd-531f-3a43-4c774d17701d"><td id="_be5c377d-04bb-6ce6-de10-a2f565c8e6c5" valign="top" align="left"><tt>configuration</tt></td>
<td id="_7c14b85b-499f-8023-0592-a3bd6e001e17" valign="top" align="left">26</td>
<td id="_973eef54-a360-2932-676f-9ed5d1bcffd6" valign="top" align="left">2</td>
<td id="_6d704a2d-60c5-8a5b-be71-1d0866710fb5" valign="top" align="left"><tt>DeviceConfigurationProto</tt></td>
<td id="_256803b5-9f2e-a7a6-307e-da42452f44bf" valign="top" align="left">repeated</td>
</tr></tbody>
</table>
</clause>

<clause id="_5797f87d-7091-5074-e161-bd51922dd284" anchor="schema-deviceconfigurationproto" obligation="normative">
<title id="_2bc059bd-e9d9-54f0-b603-df606caaa272">DeviceConfigurationProto</title>
<table id="_5a9f04ec-f8bb-ae49-96cf-975b1afe0cb2" anchor="tbl-schema-deviceconfigurationproto"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_b9e99048-fdf1-afc6-256e-08f28c05a379">Fields of <tt>DeviceConfigurationProto</tt></name>
<thead><tr id="_99d738f5-a58e-c6c7-2093-b94fa92a3974"><th id="_27118303-c30b-21ae-07a7-720202034218" valign="top" align="left">Field</th>
<th id="_bee347cc-d1a9-930e-3f36-c312bc389fab" valign="top" align="left">Tag</th>
<th id="_1c6a4b4e-2e35-4507-742e-a6e66902ede3" valign="top" align="left">Wire type</th>
<th id="_2136f731-02c3-e11a-eea3-d34b68b8d0f1" valign="top" align="left">Type</th>
<th id="_5a90c84f-9b04-4171-cb08-e4037ef34104" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_f87c53f9-ef51-7770-42a4-3ce7c3b5b41a"><td id="_e89c2293-7e73-b71e-2ae0-1d701148830e" valign="top" align="left"><tt>name</tt></td>
<td id="_c96adc95-414f-b6be-b4eb-477f21cba1e5" valign="top" align="left">1</td>
<td id="_89f64733-c050-738a-f9ec-cbd637af7360" valign="top" align="left">2</td>
<td id="_91338477-bd5f-1027-d8ef-3efdf960a13b" valign="top" align="left"><tt>string</tt></td>
<td id="_ea6afe2d-89ec-b07e-cd9f-4ec5b0d4b013" valign="top" align="left">mandatory</td>
</tr><tr id="_3ab77ca1-4ccb-4cb6-3041-75ee3a99fac3"><td id="_7241ba4a-2038-8aae-5636-98e1d64af862" valign="top" align="left"><tt>num_devices</tt></td>
<td id="_5b6dd35f-04c0-c99e-4e91-44dd51d854e9" valign="top" align="left">2</td>
<td id="_de18aadf-c0dc-5640-fc51-e79f528f1db0" valign="top" align="left">0</td>
<td id="_30626473-5a03-ba10-7f33-d36b653fe201" valign="top" align="left"><tt>int32</tt></td>
<td id="_778d8c48-7c24-99a8-409c-259147b43310" valign="top" align="left">mandatory</td>
</tr><tr id="_a10128ec-65f2-4884-e4fa-7b02b89d9c61"><td id="_8a19bf6c-f3cd-85e3-4e01-7cf59325b814" valign="top" align="left"><tt>device</tt></td>
<td id="_32a97ba9-8645-622a-bbaf-34e77fd9e181" valign="top" align="left">3</td>
<td id="_915ea3e3-756d-3a9b-df63-c450e82b5a13" valign="top" align="left">2</td>
<td id="_39b1bae9-2be1-a9fb-3a24-e7a1b00636aa" valign="top" align="left"><tt>string</tt></td>
<td id="_946c5820-75f0-1e34-f867-ca9ff998f029" valign="top" align="left">repeated</td>
</tr></tbody>
</table>
</clause>

<clause id="_46d34aa6-f919-b0c4-b650-a0c809f19a27" anchor="schema-stringstringentryproto" obligation="normative">
<title id="_76d5d473-f45f-b2ab-a6e9-234df03968ed">StringStringEntryProto</title>
<table id="_d8778c5b-1f4a-1471-76a7-d507d179dc2c" anchor="tbl-schema-stringstringentryproto"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_7da8cfe7-3c7a-3041-6a38-cfafdcf32c81">Fields of <tt>StringStringEntryProto</tt></name>
<thead><tr id="_1245b180-63dd-33fd-8f88-8a17b2c16e0c"><th id="_550d3ec6-518f-f0f7-fe81-1ed62faeebdb" valign="top" align="left">Field</th>
<th id="_929b183e-0dac-2462-67b3-07bd468e2331" valign="top" align="left">Tag</th>
<th id="_4d5f3b5c-d1eb-61cf-5d6e-9c3af34d33f7" valign="top" align="left">Wire type</th>
<th id="_558ca69e-388f-c972-7947-e85ab053fcfc" valign="top" align="left">Type</th>
<th id="_03cca4a4-1afa-4be5-1279-c23b4b5572c9" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_aaad6ffc-cb6e-9a15-6332-1338344692fe"><td id="_f7e94899-01b9-d51f-2402-42155bbc85c4" valign="top" align="left"><tt>key</tt></td>
<td id="_eeae8467-608e-9894-56b8-940f74e1f2e8" valign="top" align="left">1</td>
<td id="_6def25a7-021b-310e-bc47-742039ebdf6c" valign="top" align="left">2</td>
<td id="_d2b3c3f2-3a9e-4022-4ea0-9dae59fe0bff" valign="top" align="left"><tt>string</tt></td>
<td id="_e6f00bbc-e366-e1a4-8281-d61ce53b5389" valign="top" align="left">optional</td>
</tr><tr id="_35286b10-c216-5e7d-9aa1-dbb6204589e5"><td id="_20997d05-d8de-d40d-8dfd-5f9fe6b01607" valign="top" align="left"><tt>value</tt></td>
<td id="_56a8682a-0ba2-ebe4-1f26-36201e4d9d4b" valign="top" align="left">2</td>
<td id="_3c0b9614-4007-3fb3-a806-33b8e07e4880" valign="top" align="left">2</td>
<td id="_688a46b9-39b7-5379-b331-a11a6a25716c" valign="top" align="left"><tt>string</tt></td>
<td id="_d55542dc-43c8-7ee4-9e6a-dc4106bfe96f" valign="top" align="left">optional</td>
</tr></tbody>
</table>
</clause>

<clause id="_fddd7f98-474c-3a49-6ddf-3c0e8804e966" anchor="schema-tensorannotation" obligation="normative">
<title id="_e0e5f180-75b8-91cf-c131-f5239643d3ce">TensorAnnotation</title>
<table id="_1d64f7cc-0d92-3a09-4eb7-13aa684630cd" anchor="tbl-schema-tensorannotation"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_5f1aa80a-74c5-4788-f4c3-e5a73d3ce392">Fields of <tt>TensorAnnotation</tt></name>
<thead><tr id="_bd4859db-8b22-e954-10a2-0ecdde808710"><th id="_7677d1ed-4cf7-2ceb-7d92-1894d9864298" valign="top" align="left">Field</th>
<th id="_6f03cfa4-3c89-daef-0a45-054fe07d4a4a" valign="top" align="left">Tag</th>
<th id="_eace8d64-905a-5edd-1f87-7b81851fe2ca" valign="top" align="left">Wire type</th>
<th id="_c067bc47-9622-f9c2-5004-8298fad2dc22" valign="top" align="left">Type</th>
<th id="_3f743ded-af1e-ccce-535b-4b8d8c1c2f1c" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_dc270fe8-a062-b921-ef2e-75ea17c2d35d"><td id="_2baf4465-3192-06a9-2598-9271cefe8760" valign="top" align="left"><tt>tensor_name</tt></td>
<td id="_af6a3c8a-c188-7a47-40dd-8f7ade6803fb" valign="top" align="left">1</td>
<td id="_d8feebd1-7300-8fa0-94bc-fe3f1be2fde2" valign="top" align="left">2</td>
<td id="_ca2baf2a-b2d5-848c-d63c-c5e5e3ba23ae" valign="top" align="left"><tt>string</tt></td>
<td id="_e6e44359-ac73-66a2-85f0-8209ee128eeb" valign="top" align="left">optional</td>
</tr><tr id="_97481bc5-9b8d-67b9-8e9f-5a5bbc998b7e"><td id="_04b5507a-0a4b-191d-a1b5-bc357f724d05" valign="top" align="left"><tt>quant_parameter_tensor_names</tt></td>
<td id="_d8f37d0c-b575-1f15-1df1-f1b294d6bc07" valign="top" align="left">2</td>
<td id="_1e95de28-b0a4-9345-a500-167119b53ad5" valign="top" align="left">2</td>
<td id="_4685a16f-54a3-2a59-518d-b266247be2e7" valign="top" align="left"><tt>StringStringEntryProto</tt></td>
<td id="_188dbc9a-52ad-3ac3-f2d1-bebf88e07f6c" valign="top" align="left">repeated</td>
</tr></tbody>
</table>
</clause>

<clause id="_e991d1d3-afc7-1561-38a3-2cf4bf1a613e" anchor="schema-graphproto" obligation="normative">
<title id="_28d0e855-c811-d8ef-a3ee-a68d29408b36">GraphProto</title>
<table id="_47712aa0-6922-91c1-8632-0a1caef0b9c6" anchor="tbl-schema-graphproto"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_6e897159-8d2d-e25d-73ee-cf36e62e0ff4">Fields of <tt>GraphProto</tt></name>
<thead><tr id="_ec639cdd-34fd-bac1-a410-51c4d5959b0a"><th id="_2ff70bb1-cc94-9fd4-8af1-3ae7da83ca32" valign="top" align="left">Field</th>
<th id="_94b5ebd6-d2d3-de39-f8dd-73f6a812de4c" valign="top" align="left">Tag</th>
<th id="_448ca053-a564-81f2-0374-09cf3637ef0f" valign="top" align="left">Wire type</th>
<th id="_2d78520b-996c-49f0-452e-455bb17d3326" valign="top" align="left">Type</th>
<th id="_b76e2779-f61f-f6d9-c53b-f092a679fa23" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_8c747fb0-6619-42ff-d064-e3faeb125a94"><td id="_1b830ccc-6236-ea29-5a25-7d138d05b742" valign="top" align="left"><tt>node</tt></td>
<td id="_96b02b73-aaad-0d5f-e1b4-8c94e0a3a162" valign="top" align="left">1</td>
<td id="_40b5cf37-17c8-4535-96aa-64ddf2f54c29" valign="top" align="left">2</td>
<td id="_6cc8d61c-e3ac-8e09-c71f-8915dada742d" valign="top" align="left"><tt>NodeProto</tt></td>
<td id="_7dbfb788-34c8-7042-c6f0-d942572a8ce6" valign="top" align="left">repeated</td>
</tr><tr id="_303526f1-52b8-599d-f178-26a5ca5cd994"><td id="_5e9402df-10d9-a801-d344-ed6b75b62bb9" valign="top" align="left"><tt>name</tt></td>
<td id="_7b1ced5d-5c6b-5c5b-42b1-2b31b8ead767" valign="top" align="left">2</td>
<td id="_dab61af6-e7c8-e33c-573b-c80eb21219ac" valign="top" align="left">2</td>
<td id="_58983100-4d10-fdc9-19f6-a8f260283dd9" valign="top" align="left"><tt>string</tt></td>
<td id="_3487be06-2250-8a02-a74b-6fdeed61e1b7" valign="top" align="left">optional</td>
</tr><tr id="_d2545f5e-20e3-b276-908f-7a6e0e622813"><td id="_e1952a61-bc40-434b-d0b9-5f9e31cc56af" valign="top" align="left"><tt>initializer</tt></td>
<td id="_07a5ca29-095c-b51a-bd91-fb1114094164" valign="top" align="left">5</td>
<td id="_29d27eed-c51d-a229-7597-3c6c44a0e094" valign="top" align="left">2</td>
<td id="_425fc8e7-6657-1d33-889c-73a9b3fb9d53" valign="top" align="left"><tt>TensorProto</tt></td>
<td id="_471bebf5-daa4-1fee-ad1b-28ded2d18814" valign="top" align="left">repeated</td>
</tr><tr id="_2ee47eef-becd-6f8f-9359-7378558a0d68"><td id="_36f65b1d-ba85-59f4-d6cf-9727c415dca9" valign="top" align="left"><tt>sparse_initializer</tt></td>
<td id="_e7fc3b67-69a6-8941-ff90-75eaba9f2dba" valign="top" align="left">15</td>
<td id="_e0ec981f-843d-fb79-6077-4ee4d7967ab3" valign="top" align="left">2</td>
<td id="_513f9b59-8149-c9dd-ccc0-f0de187190c2" valign="top" align="left"><tt>SparseTensorProto</tt></td>
<td id="_ee33e338-0a2a-4cb0-6fda-eb66b143208d" valign="top" align="left">repeated</td>
</tr><tr id="_a24cd95d-6f26-9a63-368d-d64f47dd8fb3"><td id="_45c074c3-829d-1bf0-b936-648b4b58b8be" valign="top" align="left"><tt>doc_string</tt></td>
<td id="_de271b1c-8a04-cbec-7bd8-892183f66bd7" valign="top" align="left">10</td>
<td id="_6e920cbe-f7e7-86d5-55ef-a55c134b632e" valign="top" align="left">2</td>
<td id="_a5d6f7dc-3fcf-1dc7-5811-d988845110a3" valign="top" align="left"><tt>string</tt></td>
<td id="_622e23a9-7015-23bc-4eea-a00b7287e461" valign="top" align="left">optional</td>
</tr><tr id="_4cba63e4-716b-43f2-a049-56f41b3cff2c"><td id="_4ba0a7ab-aa09-fdef-b9d8-afd5bf1c83bf" valign="top" align="left"><tt>input</tt></td>
<td id="_88b9fcad-653c-974e-9472-2bce5f12752e" valign="top" align="left">11</td>
<td id="_aa0538ee-85ec-bd39-50e5-d78a5d6e2a8a" valign="top" align="left">2</td>
<td id="_95e370df-9bbe-1ee0-4d73-0f04e8a4bebb" valign="top" align="left"><tt>ValueInfoProto</tt></td>
<td id="_42b1ca34-f5f4-e6b7-6d90-fa760d0fffe6" valign="top" align="left">repeated</td>
</tr><tr id="_2e4937b4-8235-8524-4909-59c6260e4a95"><td id="_596fbc94-bffe-586f-94a8-35972d1a7279" valign="top" align="left"><tt>output</tt></td>
<td id="_68634563-0b57-c778-8560-44b0c42e58c1" valign="top" align="left">12</td>
<td id="_ab5bda29-3a32-777c-699d-d56e427b5ad2" valign="top" align="left">2</td>
<td id="_b5392a14-47d1-870d-8f47-49827a45c18d" valign="top" align="left"><tt>ValueInfoProto</tt></td>
<td id="_85486ea6-c98d-d729-6e31-03b8a368984a" valign="top" align="left">repeated</td>
</tr><tr id="_5878bd2c-0ae8-64a8-2e9c-9f3f02172291"><td id="_7954c68b-89cc-bd04-6490-08ef6be0be6a" valign="top" align="left"><tt>value_info</tt></td>
<td id="_9e90cb71-2c10-3aa0-b53c-a9597593b66a" valign="top" align="left">13</td>
<td id="_959a5bf2-6f6c-bbba-9087-a0606dca23f6" valign="top" align="left">2</td>
<td id="_0d8c4851-2f4c-7bf5-ae42-6fb289429524" valign="top" align="left"><tt>ValueInfoProto</tt></td>
<td id="_f4f480d3-62d2-279f-39c7-3db04cdabb06" valign="top" align="left">repeated</td>
</tr><tr id="_633eb933-55a8-9d96-97db-88cd7717d66d"><td id="_6495ceb5-68c4-8e83-2862-2b91c97bbb28" valign="top" align="left"><tt>quantization_annotation</tt></td>
<td id="_1f49fa26-53a4-6239-e022-5263208710d8" valign="top" align="left">14</td>
<td id="_e01eed83-6c75-3984-2b4a-10fab29a4c3a" valign="top" align="left">2</td>
<td id="_8d98f6a3-df22-8a25-bebe-515030912f05" valign="top" align="left"><tt>TensorAnnotation</tt></td>
<td id="_0a13bc6f-ce52-c148-4d00-10bcdb9c4428" valign="top" align="left">repeated</td>
</tr><tr id="_34a807e1-72ff-8d52-6539-ad91d603b8ed"><td id="_8717f02d-f02f-ddae-9026-f4bd23f53c1a" valign="top" align="left"><tt>metadata_props</tt></td>
<td id="_abbe9d8b-a16d-afba-3faa-0b52e6ef0e82" valign="top" align="left">16</td>
<td id="_e3d64289-1481-bd22-784d-3e852b14456d" valign="top" align="left">2</td>
<td id="_41a4fdb3-aa1f-0957-e977-9d03df334397" valign="top" align="left"><tt>StringStringEntryProto</tt></td>
<td id="_077efcfc-3919-246f-7827-48d9b9ea330a" valign="top" align="left">repeated</td>
</tr></tbody>
</table>

<p id="_a99b35d2-21d1-b505-37b5-50156d75fb6c">Tags and names reserved in <tt>GraphProto</tt>, which SHALL NOT be used: <tt>3, 4, 6 to 9</tt>; <tt>"ir_version", "producer_version", "producer_tag", "domain"</tt>.</p>
</clause>

<clause id="_5eaf4100-a356-6cb2-a285-41fd0e9fb9bd" anchor="schema-tensorproto" obligation="normative">
<title id="_f1ed3c8c-5aca-ef79-668a-55846cfc637c">TensorProto</title>
<table id="_0fbe60ca-6887-3f79-938a-69192435574e" anchor="tbl-schema-tensorproto"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_ea982e91-aee9-4828-46d5-95c8e04d70c7">Fields of <tt>TensorProto</tt></name>
<thead><tr id="_b6d1fa8a-357b-984b-f471-91158b450699"><th id="_471fed20-dd70-bcf9-cbaf-407f6cc71e1c" valign="top" align="left">Field</th>
<th id="_baf090af-1f1d-e329-9b9b-321c1de78052" valign="top" align="left">Tag</th>
<th id="_af0f09da-0f74-6c99-2c66-a2e23fc143f8" valign="top" align="left">Wire type</th>
<th id="_e5aeb54b-6f3c-0d4d-6610-784176e522d6" valign="top" align="left">Type</th>
<th id="_ebddf314-cb50-b300-dc4e-c462c89ef45d" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_914cb6e6-8706-4ae7-7a86-d1c10e2596f0"><td id="_5166a7f4-3bf6-210a-8c3c-bbfc1b9109ec" valign="top" align="left"><tt>dims</tt></td>
<td id="_f353cb92-4554-0594-dc9f-fc6af98ed283" valign="top" align="left">1</td>
<td id="_158af2ac-f849-59bc-d850-2dfe9fb56c58" valign="top" align="left">0</td>
<td id="_97530a52-88d1-1af1-d865-b629618c6c2b" valign="top" align="left"><tt>int64</tt></td>
<td id="_8ef6d71e-76d9-a311-447f-d1bbd5164614" valign="top" align="left">repeated</td>
</tr><tr id="_a915bdc5-bce0-99cb-fc7e-4448d6edee85"><td id="_521bc62f-c2a4-1ff2-b296-b0aa3d40654a" valign="top" align="left"><tt>data_type</tt></td>
<td id="_241da30e-7803-e0a8-19ea-9ca489c88a78" valign="top" align="left">2</td>
<td id="_3c89ea8a-418e-63b9-e4b9-e7a8168dc11d" valign="top" align="left">0</td>
<td id="_2c64e676-b8aa-5652-519b-48460e9f06a6" valign="top" align="left"><tt>int32</tt></td>
<td id="_dd3620fd-74d0-cbd0-0a8b-a7e40612b591" valign="top" align="left">optional</td>
</tr><tr id="_05f14522-2ad6-c22d-febc-0fcbf760104a"><td id="_e552d6a6-98fe-aae1-af52-f3a83c20de98" valign="top" align="left"><tt>segment</tt></td>
<td id="_5b46613e-7ca3-6bca-6795-9a69ecf324ad" valign="top" align="left">3</td>
<td id="_4f517563-aeb5-6540-85a2-fa8284d4df17" valign="top" align="left">2</td>
<td id="_08f3a8bc-a3db-36d4-1443-784787d4d62f" valign="top" align="left"><tt>Segment</tt></td>
<td id="_3e7717d4-68f3-4f7e-d9bd-432c81d9f720" valign="top" align="left">optional</td>
</tr><tr id="_19d3acac-a348-8579-cc51-2509a72ec449"><td id="_395d3237-73e5-8444-6b97-b56f74462e01" valign="top" align="left"><tt>float_data</tt></td>
<td id="_5f2dd844-d6df-572c-cd59-ebd14f7c9f6d" valign="top" align="left">4</td>
<td id="_e37c9b03-41c3-c116-ed22-297c0747fe52" valign="top" align="left">2</td>
<td id="_7c604198-23ee-faf5-b81e-a03d0ff1858f" valign="top" align="left"><tt>float</tt></td>
<td id="_0bbc7061-9407-6196-2d62-ed2b85d3c7ba" valign="top" align="left">repeated, packed</td>
</tr><tr id="_9c9df5e7-825b-9dd7-1d94-4f7f0fc8587f"><td id="_bd36dcd8-3466-6238-d9d0-388d515075e1" valign="top" align="left"><tt>int32_data</tt></td>
<td id="_91e8737c-ff20-510c-6e44-c4fb2070895b" valign="top" align="left">5</td>
<td id="_caa78558-57ba-92ed-b2d0-441d8f1ac6fa" valign="top" align="left">2</td>
<td id="_d83bb8c8-1a6b-c847-1881-524106636c16" valign="top" align="left"><tt>int32</tt></td>
<td id="_5e9700d9-3eb3-ccf3-3c58-51d05f656f0f" valign="top" align="left">repeated, packed</td>
</tr><tr id="_9c0664d1-cee1-04b8-fecb-2f1dd0b41766"><td id="_ac65368a-a66c-c334-cde4-ef9d25fdc64c" valign="top" align="left"><tt>string_data</tt></td>
<td id="_bfe66a93-0652-4e94-a149-7b69ed1bef65" valign="top" align="left">6</td>
<td id="_748b60d9-ab11-cdac-bbb3-18acefeef00c" valign="top" align="left">2</td>
<td id="_d7468545-6c2b-54ea-7b8a-b36680f87b5e" valign="top" align="left"><tt>bytes</tt></td>
<td id="_b3147d06-b5ed-4172-d46f-830a0f5025f9" valign="top" align="left">repeated</td>
</tr><tr id="_0dd7395c-a87c-1a23-7172-6e233531bad9"><td id="_a1f70cf7-12db-f90f-28b4-8459cd68aae1" valign="top" align="left"><tt>int64_data</tt></td>
<td id="_ec51de47-c364-30dc-cb73-d7b42f202b38" valign="top" align="left">7</td>
<td id="_24c1fcb8-0bc5-0318-3242-7afa1d726944" valign="top" align="left">2</td>
<td id="_6f33a478-c763-49c0-783a-43d045800941" valign="top" align="left"><tt>int64</tt></td>
<td id="_b119708a-8029-5fe4-ff61-37ea5c54366d" valign="top" align="left">repeated, packed</td>
</tr><tr id="_d1ecf6da-c217-2ae8-f412-8b6b87a2f965"><td id="_e009ae83-2256-a4eb-eadd-7ea5fb8a92cd" valign="top" align="left"><tt>name</tt></td>
<td id="_384ce3fa-4fc2-eee0-6812-49f2bcccf46f" valign="top" align="left">8</td>
<td id="_e75cd7df-10c9-43be-f6e3-653171fd7861" valign="top" align="left">2</td>
<td id="_aefbe692-8b13-3f12-93cb-1469db6addff" valign="top" align="left"><tt>string</tt></td>
<td id="_d49d8e70-6228-4e0d-bd48-c680a7fd26c6" valign="top" align="left">optional</td>
</tr><tr id="_7c40a177-cd87-0423-bdc3-e07fe6501a31"><td id="_620422d0-cd9a-b5d6-6953-79df86abae86" valign="top" align="left"><tt>doc_string</tt></td>
<td id="_308fd080-65cc-a825-18f4-1303f0e7268e" valign="top" align="left">12</td>
<td id="_6ce35078-2111-a5a8-2950-60dcd9df391a" valign="top" align="left">2</td>
<td id="_d3020be4-c1c1-42ea-e673-ec099e63c611" valign="top" align="left"><tt>string</tt></td>
<td id="_4056b28c-26db-8079-a8fd-24e6e43de957" valign="top" align="left">optional</td>
</tr><tr id="_1805f334-dff6-4149-044c-aaa337c07ff7"><td id="_33ec8a08-b7bf-36eb-2b6f-4da184123d61" valign="top" align="left"><tt>raw_data</tt></td>
<td id="_e3d54cb0-8f5b-1928-dace-354f9e2c6e7a" valign="top" align="left">9</td>
<td id="_914d9dc0-284c-c13f-1781-f3cea1225582" valign="top" align="left">2</td>
<td id="_dbad8988-f8ef-63dc-95ad-e5f69d81b99e" valign="top" align="left"><tt>bytes</tt></td>
<td id="_d71b38f6-78eb-0d6a-1624-f162a5fc4c34" valign="top" align="left">optional</td>
</tr><tr id="_24997e50-be9f-ae2b-596a-abb1d354d896"><td id="_c2288780-3887-af5f-8803-3411003a9865" valign="top" align="left"><tt>external_data</tt></td>
<td id="_2e9f0e4c-39c4-142c-ebbe-81cee5367544" valign="top" align="left">13</td>
<td id="_197a452b-6477-c65d-cd2e-7f21458c52eb" valign="top" align="left">2</td>
<td id="_ba313a7f-edee-e770-5045-3ab7e6d0f9ae" valign="top" align="left"><tt>StringStringEntryProto</tt></td>
<td id="_f2559834-61c2-470f-b787-14785568c25c" valign="top" align="left">repeated</td>
</tr><tr id="_a9a48bf7-1f63-486e-9cc3-02b097d3e95d"><td id="_87c47afc-ac84-0074-d2b8-53e5d25af53d" valign="top" align="left"><tt>data_location</tt></td>
<td id="_b3456d0a-838c-b437-5d47-ffe3285b7c5a" valign="top" align="left">14</td>
<td id="_db40ea1e-9a20-bb55-d13e-3a5db130f2de" valign="top" align="left">0</td>
<td id="_53b25deb-c434-4c6e-49e7-4396536032ac" valign="top" align="left"><tt>DataLocation</tt></td>
<td id="_2ccf55f5-2e72-f397-5453-e0b254f3b9ba" valign="top" align="left">optional</td>
</tr><tr id="_c8833dca-b93d-7a91-6389-747b80a2fa06"><td id="_24960253-8237-099f-573e-e1d1fc2ccc69" valign="top" align="left"><tt>double_data</tt></td>
<td id="_d2a48146-bf19-cd97-254b-c83cd38d8c15" valign="top" align="left">10</td>
<td id="_ac531bf4-7035-68f3-aa24-89d534956c11" valign="top" align="left">2</td>
<td id="_9c0a59c4-25bf-39c1-4376-3bcb879755f8" valign="top" align="left"><tt>double</tt></td>
<td id="_b51a2d1e-466a-d270-f3d5-42482729d37b" valign="top" align="left">repeated, packed</td>
</tr><tr id="_b2e8795d-7378-dc5e-d8bf-1b642f20c491"><td id="_b1dc97e9-2f33-b34d-50d5-57043bd317d7" valign="top" align="left"><tt>uint64_data</tt></td>
<td id="_15e6a994-9a49-24ef-c615-ca2b5556eda3" valign="top" align="left">11</td>
<td id="_5fd8a2e4-7792-89c1-858f-ee59ff446b62" valign="top" align="left">2</td>
<td id="_355d01d5-501a-e057-dca8-c9b8787f2e79" valign="top" align="left"><tt>uint64</tt></td>
<td id="_3d9cec5f-fcf7-ad75-2daa-f22dc60bd988" valign="top" align="left">repeated, packed</td>
</tr><tr id="_12df816e-16d8-0403-04f0-08c7b831526e"><td id="_0ac048f3-385b-ec58-390d-f259fae38756" valign="top" align="left"><tt>metadata_props</tt></td>
<td id="_556f9239-8360-8982-ce84-ec072d5f4fef" valign="top" align="left">16</td>
<td id="_1318c8ed-5d2e-3db7-5e29-aa8f478ad355" valign="top" align="left">2</td>
<td id="_be449483-34f7-477e-e97e-4b3fe57bcedf" valign="top" align="left"><tt>StringStringEntryProto</tt></td>
<td id="_9d3307ea-3040-cf3c-ae2e-41b55db5772f" valign="top" align="left">repeated</td>
</tr></tbody>
</table>

<table id="_8fb9299b-5381-e8a6-7a5b-a603be1cb74b" anchor="tbl-schema-tensorproto-datatype"><colgroup><col width="75%"/><col width="25%"/></colgroup>
<name id="_acafd82d-0d40-41a4-7c7f-2f6999ec9ed4">Values of <tt>TensorProto.DataType</tt></name>
<thead><tr id="_0fa6caff-8890-8a60-57c3-f0c7f3383130"><th id="_6317bebc-d80f-cb77-5770-4e77749ec795" valign="top" align="left">Name</th>
<th id="_3733b9eb-e7c5-fc5a-e137-a36cb2d39e12" valign="top" align="left">Value</th>
</tr></thead>
<tbody><tr id="_5528a534-568b-eac0-13a9-7db6cf0aa2ab"><td id="_5c9ac346-47c9-c94e-0416-84e6ac4eb040" valign="top" align="left"><tt>UNDEFINED</tt></td>
<td id="_e85de751-5932-e6d5-f517-fe83d2ccb9cd" valign="top" align="left">0</td>
</tr><tr id="_ce396418-034a-a731-d049-eee13544332f"><td id="_5d2959be-0c3c-7f1b-dc08-866b50fcacc6" valign="top" align="left"><tt>FLOAT</tt></td>
<td id="_bf7e3753-382f-18d8-126a-0f47204ed3eb" valign="top" align="left">1</td>
</tr><tr id="_03bf9b33-5b44-a2c2-64c0-cf2d67f31377"><td id="_7cad2a62-adc0-2609-7b71-e96eacaae44c" valign="top" align="left"><tt>UINT8</tt></td>
<td id="_450d9b1f-3fae-fbc5-e880-f564e213964d" valign="top" align="left">2</td>
</tr><tr id="_71446603-e7cc-9277-5f8c-217c6018710b"><td id="_53037081-69a7-4983-5b14-0bea1dd1d6e3" valign="top" align="left"><tt>INT8</tt></td>
<td id="_f4e6e159-e4e9-bd17-4a4a-2ef00cd54af9" valign="top" align="left">3</td>
</tr><tr id="_c04bf540-f028-99d6-023b-cc30c3c9c8bd"><td id="_8af42e94-5123-3938-91de-92cd710f56b8" valign="top" align="left"><tt>UINT16</tt></td>
<td id="_796df740-ba15-3e64-d83d-d7f24ef55267" valign="top" align="left">4</td>
</tr><tr id="_15fbbd8f-33d3-54e2-5c21-0bcf76c5c93f"><td id="_0d31e887-333e-2998-0090-4e717d9ba275" valign="top" align="left"><tt>INT16</tt></td>
<td id="_d382e35a-8d97-13de-d7f4-873f53a4c811" valign="top" align="left">5</td>
</tr><tr id="_aa23f4b2-30f8-9290-1b40-8c13f61297dc"><td id="_d21ffd62-35f0-cf36-db89-0cfe6cbd2f8b" valign="top" align="left"><tt>INT32</tt></td>
<td id="_be2fea3e-f473-343a-f9ef-9a3c14617839" valign="top" align="left">6</td>
</tr><tr id="_257acc88-2433-1c30-c0cf-457cb8d61d42"><td id="_c6fc49fc-db31-0813-2e95-3cd55e104627" valign="top" align="left"><tt>INT64</tt></td>
<td id="_71db43b1-a386-cf3a-b86c-4dacc47c8383" valign="top" align="left">7</td>
</tr><tr id="_4df9b3b3-7256-ec8d-44ff-f38bb8208c08"><td id="_0d705f20-06e2-89f0-962a-f2dc3ab3e223" valign="top" align="left"><tt>STRING</tt></td>
<td id="_040394c9-813a-4d7d-caa4-95ef040510fd" valign="top" align="left">8</td>
</tr><tr id="_5c5a041b-efcf-70df-708c-e56a62b3185b"><td id="_a79b458e-ee08-987f-59c1-1ad99b11eac7" valign="top" align="left"><tt>BOOL</tt></td>
<td id="_b3741761-4153-62c3-8ee1-192588461f32" valign="top" align="left">9</td>
</tr><tr id="_dfc22fc9-4bb9-fede-a982-f582c98d2bf1"><td id="_6eb75f83-0af7-c55b-9f11-03af833cba62" valign="top" align="left"><tt>FLOAT16</tt></td>
<td id="_a1381418-9326-07cb-cd05-7d6b385f61e9" valign="top" align="left">10</td>
</tr><tr id="_fa61c0ad-6e54-93af-0454-f8e134783354"><td id="_05159922-5833-ad0d-4d87-a21904b760c3" valign="top" align="left"><tt>DOUBLE</tt></td>
<td id="_5c9b0837-8261-0e56-e06f-b495488fcf82" valign="top" align="left">11</td>
</tr><tr id="_08d1082b-ecfa-4f55-f017-77f461427cd9"><td id="_cb54386b-651d-5071-cedd-4aee4ed335f7" valign="top" align="left"><tt>UINT32</tt></td>
<td id="_b35f3d68-377f-6f9f-97c9-007ad9edb7b7" valign="top" align="left">12</td>
</tr><tr id="_07fab515-43fa-0bdf-0abe-881a4c5627ae"><td id="_96d1d461-3288-15ed-6cb9-9c0bcf400c50" valign="top" align="left"><tt>UINT64</tt></td>
<td id="_e4f577dd-bd4d-bbd2-0611-7203984463ad" valign="top" align="left">13</td>
</tr><tr id="_5b578a7e-fe5e-8d88-221a-4b647c4e5c63"><td id="_ce241b56-a1b1-be74-8924-6df78650c21a" valign="top" align="left"><tt>COMPLEX64</tt></td>
<td id="_695ed059-d0b6-c3a5-d96c-b3787280544a" valign="top" align="left">14</td>
</tr><tr id="_992e0e24-bccf-8e2d-1d46-c06fcf984549"><td id="_01b70308-5753-7f26-96de-ce37e95bf909" valign="top" align="left"><tt>COMPLEX128</tt></td>
<td id="_e30f4001-3875-1d94-ef66-784058331c6c" valign="top" align="left">15</td>
</tr><tr id="_baa1cb31-e195-58e9-6c3a-84ef92d3f0f1"><td id="_316c7fe1-9f35-1fa1-5c60-75237a6b5af4" valign="top" align="left"><tt>BFLOAT16</tt></td>
<td id="_bf594f5e-12f9-79d9-4ef0-21f409e33720" valign="top" align="left">16</td>
</tr><tr id="_58d290a6-246f-f6b9-3a65-9b5089fcf283"><td id="_6c64c118-f81a-6f07-0861-100f729cf7db" valign="top" align="left"><tt>FLOAT8E4M3FN</tt></td>
<td id="_b5428f34-dfe9-bdfb-416d-c0f9d89f7ab2" valign="top" align="left">17</td>
</tr><tr id="_265c3df4-d06d-7932-5107-253e11d35ed7"><td id="_2b338c23-3306-f229-ffa0-11afd21ca886" valign="top" align="left"><tt>FLOAT8E4M3FNUZ</tt></td>
<td id="_004a0b1f-b603-0544-327b-f7a909a3a1a5" valign="top" align="left">18</td>
</tr><tr id="_a4a6d727-791e-c39d-db98-b8499432a8cf"><td id="_960e6636-31f6-8c24-a0b2-9d25a592d8c0" valign="top" align="left"><tt>FLOAT8E5M2</tt></td>
<td id="_5ed60445-37e9-66a2-4d31-5c9d9bb43f0b" valign="top" align="left">19</td>
</tr><tr id="_e82baac5-ecbc-2bef-ce5c-ac2dcba493f0"><td id="_49d97e5a-96c8-7617-4f15-b444cb07641c" valign="top" align="left"><tt>FLOAT8E5M2FNUZ</tt></td>
<td id="_705c2186-b22b-1499-e651-a10dbad26560" valign="top" align="left">20</td>
</tr><tr id="_12ceb4a7-ddab-6cc8-5eaa-a43371e94247"><td id="_8b1bced2-8229-411e-92b8-5318e0e7fecd" valign="top" align="left"><tt>UINT4</tt></td>
<td id="_298a6e09-ef23-7c29-a4f5-5390505e2de2" valign="top" align="left">21</td>
</tr><tr id="_1f47a9a9-9450-559e-1a6a-319a7ac97996"><td id="_8e50a54c-859e-5896-a53f-563d17843742" valign="top" align="left"><tt>INT4</tt></td>
<td id="_6417d895-059d-de6f-c37f-30d259143596" valign="top" align="left">22</td>
</tr><tr id="_03770901-672f-b276-cdad-a17d7b434c97"><td id="_4d510192-2296-528c-3655-98694bd81e09" valign="top" align="left"><tt>FLOAT4E2M1</tt></td>
<td id="_ebb2265e-bc3d-1524-1ec6-727ed54bf413" valign="top" align="left">23</td>
</tr><tr id="_2fdff68a-cb1f-e749-c39a-67e97f58535d"><td id="_87ccfef2-6984-8523-9e44-18e5094cede3" valign="top" align="left"><tt>FLOAT8E8M0</tt></td>
<td id="_4bf9c8eb-98ec-997f-7857-93ac27f4d880" valign="top" align="left">24</td>
</tr><tr id="_844a889f-5329-5a03-13ca-3a44cb3d8f28"><td id="_79cbe79b-dcd1-1fd8-6063-eeabcf53a926" valign="top" align="left"><tt>UINT2</tt></td>
<td id="_6f70b9c5-eace-070d-2133-76b02d7b9130" valign="top" align="left">25</td>
</tr><tr id="_560e0baa-0e39-8e1c-6a45-7f8f3bf30ff7"><td id="_2ee0f74a-8742-53c7-d26e-0972a82c3279" valign="top" align="left"><tt>INT2</tt></td>
<td id="_b0fb1099-0e58-3ff6-3123-89d1280b0fbc" valign="top" align="left">26</td>
</tr><tr id="_93675453-981d-506c-259b-15272c19044f"><td id="_2d75d3ce-4493-388a-a114-2d0a9a2b8405" valign="top" align="left"><tt>FLOAT6E2M3</tt></td>
<td id="_348b4bd6-f7c0-e43a-abba-79e46a1262a0" valign="top" align="left">27</td>
</tr><tr id="_3e6f113e-d55f-522e-c8e5-1c19ab50663f"><td id="_dbd8d51b-e5cd-08a1-1aee-c1594145c163" valign="top" align="left"><tt>FLOAT6E3M2</tt></td>
<td id="_d772a184-5968-e4cf-2097-198b3dca09a8" valign="top" align="left">28</td>
</tr></tbody>
</table>

<table id="_896236d2-a808-e0d5-e735-84e5d7b3ce5e" anchor="tbl-schema-tensorproto-datalocation"><colgroup><col width="75%"/><col width="25%"/></colgroup>
<name id="_11e8cb71-d5c6-e8ed-e3fb-642d35e3830d">Values of <tt>TensorProto.DataLocation</tt></name>
<thead><tr id="_684ccf12-41b3-8d09-7e98-76adeac0d24a"><th id="_6dbfca2d-802c-1b4d-bbba-7857ac5efd1d" valign="top" align="left">Name</th>
<th id="_ba15e0f8-9130-b0d2-d78c-8db129231b89" valign="top" align="left">Value</th>
</tr></thead>
<tbody><tr id="_6da30c32-1ce8-7490-0b9d-05ec8fe4544b"><td id="_be7e1943-3106-c1ab-3e44-4844193f959c" valign="top" align="left"><tt>DEFAULT</tt></td>
<td id="_a194e15b-9fb3-d6b8-77d2-f08f61faa9cd" valign="top" align="left">0</td>
</tr><tr id="_f125cb41-54e2-2295-78a8-ea10b6353c5f"><td id="_77c63a7d-7808-c66e-f0b5-ee81b45da737" valign="top" align="left"><tt>EXTERNAL</tt></td>
<td id="_02ec7c21-8697-85bc-3ea7-697f052c11ab" valign="top" align="left">1</td>
</tr></tbody>
</table>
</clause>

<clause id="_d540910e-7f47-4898-ca68-4d1389aa5881" anchor="schema-tensorproto-segment" obligation="normative">
<title id="_d1892db3-d4ad-0367-c96a-e82fecdf3c6f">TensorProto.Segment</title>
<table id="_759bd583-1561-0312-f2fc-de6b8388bc52" anchor="tbl-schema-tensorproto-segment"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_62c08534-a827-c4ca-3dc1-e8b9e64c175b">Fields of <tt>TensorProto.Segment</tt></name>
<thead><tr id="_e6bc6689-fe49-7e4a-bf47-db596a1c3fda"><th id="_01b4990c-4346-e523-b65c-b434b8d04522" valign="top" align="left">Field</th>
<th id="_210dae57-1fb3-3ede-a884-5cca77d9bf3c" valign="top" align="left">Tag</th>
<th id="_9531ecb2-eb1f-3043-00c8-61fae21fb06e" valign="top" align="left">Wire type</th>
<th id="_a9a61dda-c61d-33ac-f60f-21ef75689605" valign="top" align="left">Type</th>
<th id="_de278fa4-f8f0-5383-612e-8f97315336dd" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_b4c1c969-cf4b-15bc-cc57-2c3e649c386c"><td id="_fc946f12-1d3b-27af-48ee-c8c76ac27035" valign="top" align="left"><tt>begin</tt></td>
<td id="_2412fd81-c384-96c2-cfdb-146a9e594744" valign="top" align="left">1</td>
<td id="_05c06ed1-0c79-00d9-56ad-8270b99ec3f3" valign="top" align="left">0</td>
<td id="_40d35f2f-1c96-1074-8b36-4052317e4364" valign="top" align="left"><tt>int64</tt></td>
<td id="_aa09e364-6816-a8f9-e0b3-10204defb204" valign="top" align="left">optional</td>
</tr><tr id="_0b4032fc-90f5-3d07-3900-c26d8581ff1e"><td id="_76e2a7a8-381b-f33e-ecff-bdb432fde57b" valign="top" align="left"><tt>end</tt></td>
<td id="_3d831a39-f06d-74a2-f7ff-3846ced22470" valign="top" align="left">2</td>
<td id="_4272558d-692f-a80b-a4fb-bc3fb6b58ec3" valign="top" align="left">0</td>
<td id="_e822914d-7726-4545-5518-952d09da1f91" valign="top" align="left"><tt>int64</tt></td>
<td id="_528a1959-6951-289d-a979-fa0a79b0d7a4" valign="top" align="left">optional</td>
</tr></tbody>
</table>
</clause>

<clause id="_52466261-8392-c9db-ce8f-5b9ae0b93f37" anchor="schema-sparsetensorproto" obligation="normative">
<title id="_afc0da4c-b092-7875-f742-d9bded5a59ca">SparseTensorProto</title>
<table id="_f5b7bf71-ed35-2f21-77c5-832258760246" anchor="tbl-schema-sparsetensorproto"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_008b91cd-bc34-5848-b130-27828797310b">Fields of <tt>SparseTensorProto</tt></name>
<thead><tr id="_b24f6986-36f5-3d4d-4816-f58f72dfa09d"><th id="_7ecf67db-b152-3674-187f-3e21ee86b9ae" valign="top" align="left">Field</th>
<th id="_46904062-cef2-ca3e-bbb5-0570b669b0a5" valign="top" align="left">Tag</th>
<th id="_c63de0cd-6b88-54d9-abef-7790171b4d79" valign="top" align="left">Wire type</th>
<th id="_97688062-4238-2b53-b01b-291fba61f634" valign="top" align="left">Type</th>
<th id="_dac4b4f3-7989-72cc-5af7-44233f430272" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_b94c80a1-839b-2bea-45a6-d5539aefe55e"><td id="_45733dca-6ffc-aa2f-9a40-2e8598aa7f48" valign="top" align="left"><tt>values</tt></td>
<td id="_e65d55d1-f4c8-953e-f408-0a66edf62e52" valign="top" align="left">1</td>
<td id="_14d4bfa4-8fdc-19dd-4670-7aa450ea0f48" valign="top" align="left">2</td>
<td id="_7fa39e2f-ca01-4c76-1b42-5633e28a3a71" valign="top" align="left"><tt>TensorProto</tt></td>
<td id="_ed0ab416-f658-525a-daaa-8ce2d25addcf" valign="top" align="left">optional</td>
</tr><tr id="_75b2f614-660e-3590-19e9-4ed68aa39c43"><td id="_1cca441d-c4a3-89fa-f3af-2af8371fcf97" valign="top" align="left"><tt>indices</tt></td>
<td id="_eb9c259f-bc82-8d1d-a877-1623a8265ac8" valign="top" align="left">2</td>
<td id="_69883649-b258-d4ed-af62-c856bafe1814" valign="top" align="left">2</td>
<td id="_f8ebac56-4c38-7974-e4e0-efebdd876198" valign="top" align="left"><tt>TensorProto</tt></td>
<td id="_32be882f-42ec-516f-fc3b-534f5d480b45" valign="top" align="left">optional</td>
</tr><tr id="_c743bbd5-85be-f31a-b78a-d1ac09509ac2"><td id="_6e9469df-af22-5c30-3bc4-d4a0f8afaabf" valign="top" align="left"><tt>dims</tt></td>
<td id="_dc16dd6b-998c-d940-7842-dedae83f24a1" valign="top" align="left">3</td>
<td id="_c865f7fd-b437-0d3d-e357-85d00fd0eed6" valign="top" align="left">0</td>
<td id="_b2546f11-31b3-7b6d-7296-f0d6659dfd59" valign="top" align="left"><tt>int64</tt></td>
<td id="_a3297b9e-4912-3a8f-7813-3a65a505600a" valign="top" align="left">repeated</td>
</tr></tbody>
</table>
</clause>

<clause id="_90f2d9d7-ae8b-4294-cbab-5539ca35a3e5" anchor="schema-tensorshapeproto" obligation="normative">
<title id="_50425da7-8796-7d96-d367-7b82e6ffaf3e">TensorShapeProto</title>
<table id="_eaf08841-38bf-d502-8345-e21d42069a5d" anchor="tbl-schema-tensorshapeproto"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_d4d4700b-9027-4e4d-a6fa-abdaa23568c7">Fields of <tt>TensorShapeProto</tt></name>
<thead><tr id="_2bcbd703-1eeb-3b24-8a96-af5f94fb48d9"><th id="_be87fe56-8092-31f7-5b43-e99cdfa94cf3" valign="top" align="left">Field</th>
<th id="_3d78b660-df67-a8a7-362a-02037330da92" valign="top" align="left">Tag</th>
<th id="_ebba6479-9602-3e12-1902-bc23b3148d4f" valign="top" align="left">Wire type</th>
<th id="_4b857399-b00c-dfc6-c278-2a126c1b1def" valign="top" align="left">Type</th>
<th id="_f04daa26-0c82-e85f-0bfe-fbd6a62ca6f6" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_63b7811e-6e7e-2411-22fb-f8d32f23014e"><td id="_657685eb-98f4-c9ce-1d78-91f8e31c2797" valign="top" align="left"><tt>dim</tt></td>
<td id="_d86103f8-7740-c69b-f428-d2f36e404993" valign="top" align="left">1</td>
<td id="_326b3e3e-ac50-a976-2e68-1e73112f1f0b" valign="top" align="left">2</td>
<td id="_ede9025b-020d-4c23-79e1-fe11c69b84bf" valign="top" align="left"><tt>Dimension</tt></td>
<td id="_1778378f-652a-80e1-57fb-c5c4f98cca51" valign="top" align="left">repeated</td>
</tr></tbody>
</table>
</clause>

<clause id="_7ef3eedf-ed02-2c74-7788-8f4ce2c6efd1" anchor="schema-tensorshapeproto-dimension" obligation="normative">
<title id="_66dab87c-6e43-2a63-4cc1-5fc19fb4291e">TensorShapeProto.Dimension</title>
<table id="_187aabf6-61d2-c752-1738-82d3b8d9ba8e" anchor="tbl-schema-tensorshapeproto-dimension"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_e49b7cb4-85db-948b-9b96-346a5bea45e9">Fields of <tt>TensorShapeProto.Dimension</tt></name>
<thead><tr id="_dce1202c-b2c7-ebc6-9b8c-9e706957002c"><th id="_bfe45516-7be2-c46b-5a0a-6c4824611791" valign="top" align="left">Field</th>
<th id="_1f8b1c74-0cb8-bd45-2b10-7aee7fc8f688" valign="top" align="left">Tag</th>
<th id="_3130ae78-e867-1242-9ad4-80ad137b756c" valign="top" align="left">Wire type</th>
<th id="_95d5f690-5ccf-870a-72fc-0bb1fba6998f" valign="top" align="left">Type</th>
<th id="_44ced27d-878d-b406-a5c1-55d876c81822" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_fdfb5697-db92-3f8d-4ff8-14318585c532"><td id="_818384da-d278-d9bc-d218-129ac794a0a3" valign="top" align="left"><tt>dim_value</tt></td>
<td id="_57fe3f77-022a-44e0-259c-503fcf15a225" valign="top" align="left">1</td>
<td id="_f3f28262-0e1f-a5f2-7ab5-72b181c297f2" valign="top" align="left">0</td>
<td id="_8fa269eb-239a-9014-1e6c-2679f079d49d" valign="top" align="left"><tt>int64</tt></td>
<td id="_6eaa045c-1c4c-a223-f33c-29a8cc3e2688" valign="top" align="left">one of the group</td>
</tr><tr id="_b1f96a4a-341c-5bd9-a3d4-571d26192e35"><td id="_c209ab9b-1578-fc95-dc8d-b2070e0834bd" valign="top" align="left"><tt>dim_param</tt></td>
<td id="_909303da-488d-da5c-aa9f-dc7ef091ea44" valign="top" align="left">2</td>
<td id="_98b4eec9-5ee1-d7e6-3d94-02b0ecc872dc" valign="top" align="left">2</td>
<td id="_d5d36519-fece-bc8a-8d52-76ffb4c55317" valign="top" align="left"><tt>string</tt></td>
<td id="_eea54e8d-21a2-d66a-5bde-2a1e1f879439" valign="top" align="left">one of the group</td>
</tr><tr id="_7fca2d8c-2d6b-6e69-0086-8de140c19a3a"><td id="_fd548d95-50a9-59e0-1215-4346a8cb2511" valign="top" align="left"><tt>denotation</tt></td>
<td id="_cfd68b5b-55ba-ee2d-aca1-2f706a1d0342" valign="top" align="left">3</td>
<td id="_a2ec3f12-5efe-fd8e-382d-11cc93c01785" valign="top" align="left">2</td>
<td id="_18809ecc-4fe0-1eda-b449-77193c725f1c" valign="top" align="left"><tt>string</tt></td>
<td id="_9d876d64-d4d3-d8c8-36f8-58cc8f86ae4e" valign="top" align="left">optional</td>
</tr></tbody>
</table>

<p id="_651f48aa-74ea-9e1f-8035-cb8e418ab5b6">Exactly one of <tt>dim_value</tt>, <tt>dim_param</tt> SHALL be present, being the group <tt>value</tt>.</p>
</clause>

<clause id="_5e02e42a-456b-b516-08bf-e22ea222ef85" anchor="schema-typeproto" obligation="normative">
<title id="_0d3d5987-4cba-6d1f-b966-895defadecfa">TypeProto</title>
<table id="_7193d390-3c97-c83e-5ed1-ee6b4ab34429" anchor="tbl-schema-typeproto"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_95d90348-44c1-d864-e498-1e82514939cf">Fields of <tt>TypeProto</tt></name>
<thead><tr id="_e6113916-0520-74a8-ac1a-cc145bf6c434"><th id="_ee0a2810-4e76-8286-fa80-a8e1713301bd" valign="top" align="left">Field</th>
<th id="_210a3f08-38ad-c924-6939-b22da8026e5f" valign="top" align="left">Tag</th>
<th id="_dbc71dbd-dc9a-1f31-0cf3-8539687cbdf5" valign="top" align="left">Wire type</th>
<th id="_25d6d7fd-38df-4434-bc0a-dc907d004f16" valign="top" align="left">Type</th>
<th id="_3288568b-14ee-a693-2790-c6c58dd5c045" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_57d7175f-ab24-5dd7-5acc-e5d76c2c5266"><td id="_3d756a81-e15e-bfd1-b37f-05403f1de1b5" valign="top" align="left"><tt>tensor_type</tt></td>
<td id="_521cd7b0-fce3-218a-3639-c7667ed8a7b9" valign="top" align="left">1</td>
<td id="_fb71fc59-4f8f-075b-7efd-3440193784da" valign="top" align="left">2</td>
<td id="_1758152b-e87d-84de-a441-dab4dc524f07" valign="top" align="left"><tt>Tensor</tt></td>
<td id="_6086a788-0e7c-9e72-9eca-62bdbeaa152b" valign="top" align="left">one of the group</td>
</tr><tr id="_9551510f-6c6a-df4d-072f-d4f9f9acbc83"><td id="_1f5c8c3a-cabc-350b-7de3-8165e090fe26" valign="top" align="left"><tt>sequence_type</tt></td>
<td id="_e7fb1dab-95ff-503b-2f63-fc7eaa30d341" valign="top" align="left">4</td>
<td id="_632fd868-33d4-3ce6-73e0-e4fa25054099" valign="top" align="left">2</td>
<td id="_12d64cd1-4b96-e652-00d0-ce57a404fdad" valign="top" align="left"><tt>Sequence</tt></td>
<td id="_f65176aa-1a99-fa21-d9b1-3b94c59447b5" valign="top" align="left">one of the group</td>
</tr><tr id="_3c35fe02-e342-85db-a5d3-0285e7ffa49f"><td id="_a998dcd3-7799-dfc8-32b0-12dadd9aa416" valign="top" align="left"><tt>map_type</tt></td>
<td id="_84bb8915-bfa5-a24d-01f5-ad4ff8f88319" valign="top" align="left">5</td>
<td id="_b2b29eb2-f016-c11e-3696-c68e76bf2268" valign="top" align="left">2</td>
<td id="_9a5459f3-e64c-42e8-5168-34acbc93e1ca" valign="top" align="left"><tt>Map</tt></td>
<td id="_cb357a9d-53c7-2588-333d-c5da92a4902b" valign="top" align="left">one of the group</td>
</tr><tr id="_c5fb85dc-6352-adce-5b92-606aa45cc3dc"><td id="_3cee4765-8369-3f9a-6582-7a6d28bbf6de" valign="top" align="left"><tt>optional_type</tt></td>
<td id="_73ba063c-6acf-ca1d-715f-13eba8da0fe2" valign="top" align="left">9</td>
<td id="_4d27f3d2-5047-23cf-ff4a-a91d86ecf0f7" valign="top" align="left">2</td>
<td id="_46c6590d-2397-ffae-4c46-5374ea1d9ed7" valign="top" align="left"><tt>Optional</tt></td>
<td id="_718bd7e1-3a7a-2e00-6ab7-b055e26c4b4c" valign="top" align="left">one of the group</td>
</tr><tr id="_4abd2702-9564-3cfb-76d7-633f4fb601e7"><td id="_8a97efcd-18a9-7ae1-b03e-bb2fa3dd674c" valign="top" align="left"><tt>sparse_tensor_type</tt></td>
<td id="_2cde8773-ca37-23ad-d83b-b4ef2f19d91d" valign="top" align="left">8</td>
<td id="_9f5ab67e-f197-78c7-377a-083169ab483c" valign="top" align="left">2</td>
<td id="_c207fe01-7bac-c025-38aa-702a50e4800a" valign="top" align="left"><tt>SparseTensor</tt></td>
<td id="_66903d97-17ee-abfb-2381-659d9bdf8907" valign="top" align="left">one of the group</td>
</tr><tr id="_de6d5641-692d-525d-51e0-3a860fb1cf0f"><td id="_3b51b0d3-341d-8f29-89ac-b7595bf48526" valign="top" align="left"><tt>opaque_type</tt></td>
<td id="_7e704fa6-719a-594c-310c-f85f2e2e57b6" valign="top" align="left">7</td>
<td id="_53e98554-9d5b-2a64-98b3-7484519c7fce" valign="top" align="left">2</td>
<td id="_6890ebcc-6e55-4ee1-1423-955b326c58a7" valign="top" align="left"><tt>Opaque</tt></td>
<td id="_eef3db8e-7836-9070-27a6-51748918b65f" valign="top" align="left">one of the group</td>
</tr><tr id="_27096e12-ff9e-c6f0-7d1b-503d094db0a6"><td id="_d1203f46-1b0f-b4f3-98d1-921374bdd7a5" valign="top" align="left"><tt>denotation</tt></td>
<td id="_f0dc2f5d-a592-8cbd-7610-c6c17356d921" valign="top" align="left">6</td>
<td id="_f256c22e-b07f-5926-4098-527b7eca8b0c" valign="top" align="left">2</td>
<td id="_41af0536-b4fe-2503-b391-35840d068a29" valign="top" align="left"><tt>string</tt></td>
<td id="_fc24074b-0ede-814b-4fef-a549ff252208" valign="top" align="left">optional</td>
</tr></tbody>
</table>

<p id="_da3aacfb-9c0e-ecb1-5cc4-b1100da8f040">Exactly one of <tt>tensor_type</tt>, <tt>sequence_type</tt>, <tt>map_type</tt>, <tt>optional_type</tt>, <tt>sparse_tensor_type</tt>, <tt>opaque_type</tt> SHALL be present, being the group <tt>value</tt>.</p>
</clause>

<clause id="_f6f31129-51c3-615a-f793-060cc0a06b35" anchor="schema-typeproto-tensor" obligation="normative">
<title id="_9bc156ed-4154-e23d-ff98-0e15c35f3408">TypeProto.Tensor</title>
<table id="_ca325c85-5d58-0795-18da-1c9c9272b412" anchor="tbl-schema-typeproto-tensor"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_380fca27-0c3c-61c8-e47f-e9307eb244c4">Fields of <tt>TypeProto.Tensor</tt></name>
<thead><tr id="_4c824fc9-62d4-c7ec-fd03-144a8b0419a4"><th id="_16cf88be-49a4-a02d-1100-b4d167826819" valign="top" align="left">Field</th>
<th id="_c827a05d-b760-da39-e7c8-e06ee0369c26" valign="top" align="left">Tag</th>
<th id="_b69bb497-70a3-c4c4-c8e2-30937e4caf43" valign="top" align="left">Wire type</th>
<th id="_568b84b9-291c-891f-8774-9e475e7ff7d3" valign="top" align="left">Type</th>
<th id="_db55f832-02b9-dc94-afd6-6d043276f9e4" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_44bc0a46-32ab-0b10-566f-c802387b4bf1"><td id="_c8518da3-9fd9-28f6-d89c-20814bfa9ba3" valign="top" align="left"><tt>elem_type</tt></td>
<td id="_1ea27801-4215-7382-01b3-28f46aa90b85" valign="top" align="left">1</td>
<td id="_9b221618-c033-f8c8-19e3-74ed4e836869" valign="top" align="left">0</td>
<td id="_1bf1d3b1-444f-c485-2223-f8bdfc8131c6" valign="top" align="left"><tt>int32</tt></td>
<td id="_724b54ec-a623-5057-1a13-915d7705d95c" valign="top" align="left">mandatory</td>
</tr><tr id="_2117102d-c9a6-758d-eab5-ea11959ff736"><td id="_2d22b41c-cce8-18cf-a8fe-a30af6302d0a" valign="top" align="left"><tt>shape</tt></td>
<td id="_df8946a5-3cd5-376b-3437-90fccdc367f7" valign="top" align="left">2</td>
<td id="_d7acc11c-7b87-32a4-1423-4e4eb5da9532" valign="top" align="left">2</td>
<td id="_35ab6627-f93c-3936-61b8-a8f78777b3ec" valign="top" align="left"><tt>TensorShapeProto</tt></td>
<td id="_7b74feb2-ff2e-210c-235a-f081741c26df" valign="top" align="left">optional</td>
</tr></tbody>
</table>
</clause>

<clause id="_1b84f5b5-7e00-2693-80d6-875c510c3298" anchor="schema-typeproto-sequence" obligation="normative">
<title id="_5ab85d5a-71d7-c6e4-e350-01d635351b01">TypeProto.Sequence</title>
<table id="_874a08f3-5ace-342a-56fe-1ecea09ab160" anchor="tbl-schema-typeproto-sequence"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_6e4a7917-ffc1-6d31-3b0f-5a12a606773f">Fields of <tt>TypeProto.Sequence</tt></name>
<thead><tr id="_5344c02f-c7a3-3384-3fa1-d40e0a7cf24f"><th id="_8cea1b9e-c76c-ae34-cf74-f0b84cb5bf9c" valign="top" align="left">Field</th>
<th id="_b75e17b4-219b-4a1a-44db-8fa8b63235dd" valign="top" align="left">Tag</th>
<th id="_3352f9e9-4a0e-8458-80cd-1a2372b2a9af" valign="top" align="left">Wire type</th>
<th id="_02719260-311e-e177-cf4f-d80fad275092" valign="top" align="left">Type</th>
<th id="_66527a69-ec8a-fa67-ee52-68fd06b789c3" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_a72a9b4f-bfea-3e9c-be83-f2a571c96135"><td id="_9fbfab6d-0157-1eb8-254c-d8628309588e" valign="top" align="left"><tt>elem_type</tt></td>
<td id="_92c0285a-f286-b9bb-7a7f-53af75c5e268" valign="top" align="left">1</td>
<td id="_17142b56-db99-c0ae-640e-72b6b373fc59" valign="top" align="left">2</td>
<td id="_3323461b-941d-1cf6-5449-74b19ccdd71a" valign="top" align="left"><tt>TypeProto</tt></td>
<td id="_59334057-72b0-aa2e-5803-37d1b4f99d05" valign="top" align="left">mandatory</td>
</tr></tbody>
</table>
</clause>

<clause id="_2709c171-9f2d-6e6f-fdda-3af202140a72" anchor="schema-typeproto-map" obligation="normative">
<title id="_005c98b3-b783-5e12-58d6-341dc2a0e365">TypeProto.Map</title>
<table id="_c58f7def-bb80-270d-ccf3-5b1cffdd64c8" anchor="tbl-schema-typeproto-map"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_0c22f4b5-49ed-2a08-7f28-0254b42e0235">Fields of <tt>TypeProto.Map</tt></name>
<thead><tr id="_5afab678-3883-acd2-e9f7-b7d66b8164c6"><th id="_af12bb02-7c53-7668-5fa6-63aae7d18fd9" valign="top" align="left">Field</th>
<th id="_a617a02b-7b2b-37c4-555a-f85ac1975d9e" valign="top" align="left">Tag</th>
<th id="_cf4f83bd-86b2-a352-efdf-e78ae309e592" valign="top" align="left">Wire type</th>
<th id="_88362f89-72e3-36b1-0630-fe746a28e5d8" valign="top" align="left">Type</th>
<th id="_84e7fba8-1138-08ce-4047-56a2b56911db" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_b8d3d919-32ff-c19f-3851-c572464cc2e2"><td id="_ebb38b70-622a-02ef-f717-1e6d07203fab" valign="top" align="left"><tt>key_type</tt></td>
<td id="_01ac419c-4b0a-ad2d-16b3-7ce7b719f599" valign="top" align="left">1</td>
<td id="_9d39de49-7fe2-656f-166c-6743ff69954a" valign="top" align="left">0</td>
<td id="_cd5973b7-f167-b33e-39a6-c470075c99cb" valign="top" align="left"><tt>int32</tt></td>
<td id="_8cf8bf59-69da-8dda-62f6-92a37a7e99bd" valign="top" align="left">mandatory</td>
</tr><tr id="_e936f18b-e1c1-6e7b-1202-78f9e5b5de7a"><td id="_592d91c0-5efe-592f-38ba-5650c25eccb6" valign="top" align="left"><tt>value_type</tt></td>
<td id="_ab77a124-9a14-3359-dbc2-6721f2de8e9e" valign="top" align="left">2</td>
<td id="_8ac045c7-fa42-62cc-8da6-5692f51b2348" valign="top" align="left">2</td>
<td id="_860abc98-cf84-26e3-5618-ff36dedf3b28" valign="top" align="left"><tt>TypeProto</tt></td>
<td id="_a8fff314-b83e-e4e1-e6a4-020042166b12" valign="top" align="left">mandatory</td>
</tr></tbody>
</table>
</clause>

<clause id="_4ae5b019-b3ff-7a32-084a-ab767d01af9d" anchor="schema-typeproto-optional" obligation="normative">
<title id="_157c7b5f-7e73-5baf-875d-290836050559">TypeProto.Optional</title>
<table id="_daa324e8-cc13-76b9-7dff-581abdd91c9f" anchor="tbl-schema-typeproto-optional"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_2aa37187-e4b6-8c5f-a3a0-8372a4dde362">Fields of <tt>TypeProto.Optional</tt></name>
<thead><tr id="_e351e2bf-b699-c796-3d4f-a11b82625d06"><th id="_54c84eb9-dd6c-444f-89de-7c16aca5569e" valign="top" align="left">Field</th>
<th id="_a9bb9c47-1f6c-9152-7621-36f6f090939e" valign="top" align="left">Tag</th>
<th id="_dbcc9666-890c-289a-2c80-a7d7eb988efc" valign="top" align="left">Wire type</th>
<th id="_ccb86e65-a0a2-9488-4f10-508925c11bab" valign="top" align="left">Type</th>
<th id="_154768bf-244d-58fc-6f70-736a6a91aefd" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_557339aa-9997-c622-617f-93ef2a6a1c89"><td id="_992e99de-3769-9b30-55dd-54a66e012c0e" valign="top" align="left"><tt>elem_type</tt></td>
<td id="_eced6ae0-55f5-b7f7-ea2b-f21ecc39bb02" valign="top" align="left">1</td>
<td id="_16900941-da97-4fec-bdc7-9f95ff2d82f2" valign="top" align="left">2</td>
<td id="_9de8f02d-297b-29dc-40ac-c84b909815c8" valign="top" align="left"><tt>TypeProto</tt></td>
<td id="_c06e8502-c122-c132-4e42-baf6a79e2137" valign="top" align="left">mandatory</td>
</tr></tbody>
</table>
</clause>

<clause id="_05d661a7-7a1c-a619-b013-0a0c94927ad6" anchor="schema-typeproto-sparsetensor" obligation="normative">
<title id="_6ed20f9a-68c2-18be-87ce-e369226c579a">TypeProto.SparseTensor</title>
<table id="_fd4bc3ed-e79e-47d0-377b-57be1df3a1d1" anchor="tbl-schema-typeproto-sparsetensor"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_4802edb6-5a0b-6bab-e9e0-a986465d684c">Fields of <tt>TypeProto.SparseTensor</tt></name>
<thead><tr id="_eb4278d2-4700-e507-330e-5229601a53e0"><th id="_3d97ef6a-e8c1-82d3-a391-f74c9582f7a6" valign="top" align="left">Field</th>
<th id="_8ea68cf9-fc35-8254-1961-068dc852ada6" valign="top" align="left">Tag</th>
<th id="_7116de3a-bf40-d247-06ec-68ba76446c38" valign="top" align="left">Wire type</th>
<th id="_7f57b865-5bbd-b67f-f7e7-d92477ab7858" valign="top" align="left">Type</th>
<th id="_6a400136-8907-fc26-e705-bf58178690cd" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_ee7acda6-b7b6-ab25-b8b0-aaf04bd53793"><td id="_29a379d1-7d7d-3723-83e8-c4c65d8a0f62" valign="top" align="left"><tt>elem_type</tt></td>
<td id="_39c1104c-f337-9292-d026-3ca9662b556f" valign="top" align="left">1</td>
<td id="_184f14b0-8f22-7979-b7a5-9fc7587e902a" valign="top" align="left">0</td>
<td id="_d3b1cf24-c31f-cd2b-f982-a41c3157a68f" valign="top" align="left"><tt>int32</tt></td>
<td id="_0fbfa0a6-925b-6c66-bba0-b553b3d6dccd" valign="top" align="left">mandatory</td>
</tr><tr id="_9690e6cc-62d1-f96f-e17b-9cd1c3061831"><td id="_af9efc92-a599-ce04-4898-663924d8791d" valign="top" align="left"><tt>shape</tt></td>
<td id="_261222ea-d084-f508-622c-8dc7f01a0774" valign="top" align="left">2</td>
<td id="_92a52307-d4a2-468b-0e3f-cd62b9d3101c" valign="top" align="left">2</td>
<td id="_1edc8c84-1964-ca1d-1fcb-57a1624a667b" valign="top" align="left"><tt>TensorShapeProto</tt></td>
<td id="_0e87fac1-1363-9a12-34d7-7ee00c48571c" valign="top" align="left">optional</td>
</tr></tbody>
</table>
</clause>

<clause id="_0732178f-7c03-b15a-d47a-d06de1f5fa16" anchor="schema-typeproto-opaque" obligation="normative">
<title id="_09db3510-44c9-dd24-5e7b-845eb95d0317">TypeProto.Opaque</title>
<table id="_73caaf2a-c429-6b22-bd86-d38e1a7dd868" anchor="tbl-schema-typeproto-opaque"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_b5995102-33d7-f3e2-4e9a-aa373ebe00cf">Fields of <tt>TypeProto.Opaque</tt></name>
<thead><tr id="_30dc9ee1-f1d1-8eea-2488-87b53c15d027"><th id="_f4fc15cb-9fae-437e-de41-70381bb8e452" valign="top" align="left">Field</th>
<th id="_d385d8f0-e5d5-8647-b2b9-f4a49d87ea67" valign="top" align="left">Tag</th>
<th id="_e1ef9b46-034d-88bd-f3cc-4831f7d0a180" valign="top" align="left">Wire type</th>
<th id="_913256ad-4539-3ae8-82fc-ba392dcb6120" valign="top" align="left">Type</th>
<th id="_c7dc13fd-a98e-f5f4-3d9d-1392c4d8a84f" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_bce20b1c-9dad-5020-d073-799eda49129d"><td id="_b3c55012-07d0-e9ea-0940-093cda79ff93" valign="top" align="left"><tt>domain</tt></td>
<td id="_94095478-41d2-ab27-10f6-98dc6bf7158e" valign="top" align="left">1</td>
<td id="_9a435ed9-c7c8-7492-0a3e-a5b1084ec777" valign="top" align="left">2</td>
<td id="_58ddd92d-9998-1d67-2ef5-e9d776932204" valign="top" align="left"><tt>string</tt></td>
<td id="_efd0da94-618d-f327-816c-02965d09def7" valign="top" align="left">optional</td>
</tr><tr id="_0d2fdf54-0ae6-285b-ceb0-032b9688fe28"><td id="_9dead4b4-ed09-e2ae-a0c6-55606d680144" valign="top" align="left"><tt>name</tt></td>
<td id="_cd4c6a04-6cd2-4c4f-fb40-086b4a40c163" valign="top" align="left">2</td>
<td id="_4d1ed740-7a6c-e428-4ac8-e6c10e545b6c" valign="top" align="left">2</td>
<td id="_02244768-ac56-be3f-2591-4c5eb3ebf7b7" valign="top" align="left"><tt>string</tt></td>
<td id="_3f1c334b-c2d5-55a9-0290-2b9fa1a7a9cd" valign="top" align="left">optional</td>
</tr></tbody>
</table>

<p id="_071da8d5-e500-69e8-86c0-839dcfe140ad">Tags and names reserved in <tt>TypeProto.Opaque</tt>, which SHALL NOT be used: <tt>3</tt>; <tt>"parameters"</tt>.</p>
</clause>

<clause id="_e0e31c6c-6a5d-8cc1-375c-a4b1a2537a21" anchor="schema-operatorsetidproto" obligation="normative">
<title id="_7933a985-0b78-bb06-0047-faf246aef5d1">OperatorSetIdProto</title>
<table id="_be1b5f23-e7a2-562f-41d3-709a13038782" anchor="tbl-schema-operatorsetidproto"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_e9310468-8fe9-fd8e-898f-27f6ff9eafcf">Fields of <tt>OperatorSetIdProto</tt></name>
<thead><tr id="_449a7eb6-d59d-f54d-53c9-d518cdaff5ad"><th id="_9dbf6dbc-acf1-1eda-7e73-4181f01c1ec7" valign="top" align="left">Field</th>
<th id="_76f50fee-6257-1643-13c5-b437a1775cc8" valign="top" align="left">Tag</th>
<th id="_6fe6d6df-5582-6110-8ddd-fb0b42b944ad" valign="top" align="left">Wire type</th>
<th id="_e42fa4b7-4d26-392d-ee5e-937c494f22bc" valign="top" align="left">Type</th>
<th id="_dc3a252f-5248-7b4f-86e4-0dab11632713" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_2c960dd9-e884-843e-c819-c4d134c6fc8b"><td id="_55e81542-8d8d-839a-ec79-48585b86a81c" valign="top" align="left"><tt>domain</tt></td>
<td id="_7e756d7a-1912-a990-a4d5-141c59abfa06" valign="top" align="left">1</td>
<td id="_cefe007b-a16f-cc88-7824-4ae5dd6a726b" valign="top" align="left">2</td>
<td id="_3da66779-42ec-b2b4-2ab7-88c9eaee56a8" valign="top" align="left"><tt>string</tt></td>
<td id="_57a21f13-5565-5be0-ba21-993a97bb34df" valign="top" align="left">mandatory</td>
</tr><tr id="_354078f9-55a3-8cba-3e89-ed5c346684fd"><td id="_444835f6-8ddf-450d-f58b-7978c068ee02" valign="top" align="left"><tt>version</tt></td>
<td id="_d1fceede-e206-e0fb-e6ce-316a4aa56e22" valign="top" align="left">2</td>
<td id="_c1c5a318-c632-ba75-ee66-57f98addd436" valign="top" align="left">0</td>
<td id="_4131e9a1-c021-7446-8196-ad47319c9f1b" valign="top" align="left"><tt>int64</tt></td>
<td id="_7b7cb6f9-5f8f-aa41-deb9-85cef367d9ef" valign="top" align="left">mandatory</td>
</tr></tbody>
</table>
</clause>

<clause id="_fb0d8112-d625-565b-737b-15a49a3747d3" anchor="schema-operatorstatus" obligation="normative">
<title id="_7c5be2da-8c19-1f44-b160-459b552f192b">OperatorStatus</title>
<table id="_d10a48f5-70d1-9de6-c799-657299977a5f" anchor="tbl-schema-operatorstatus"><colgroup><col width="75%"/><col width="25%"/></colgroup>
<name id="_769afea4-9479-88c1-35fc-1e7ec42591bd">Values of <tt>OperatorStatus</tt></name>
<thead><tr id="_ec40f98c-404b-4955-cd24-b72fe6e15f1f"><th id="_b313bea2-8aaf-a238-3d41-03b4610037a1" valign="top" align="left">Name</th>
<th id="_2c12ace5-3e23-ead7-dff0-23a32c02ec76" valign="top" align="left">Value</th>
</tr></thead>
<tbody><tr id="_3d3240bd-4cb7-c280-fddc-2faafc4c6b87"><td id="_8e0f7d7d-d40e-869d-18ac-83e50067db8c" valign="top" align="left"><tt>EXPERIMENTAL</tt></td>
<td id="_6ed64ba9-9ed4-3c80-0766-394a16f7e7d3" valign="top" align="left">0</td>
</tr><tr id="_c4782a80-7ffa-c2fa-8456-1e053b051388"><td id="_f39148db-2a3e-b719-84eb-ae66ebca294c" valign="top" align="left"><tt>STABLE</tt></td>
<td id="_33cb3652-a098-ad3c-e83a-2287ab99b204" valign="top" align="left">1</td>
</tr></tbody>
</table>
</clause>

<clause id="_762b303f-c0fc-9551-2d8a-ca9df14bb686" anchor="schema-functionproto" obligation="normative">
<title id="_8cf84955-a706-ae64-012b-ecff0b2543e9">FunctionProto</title>
<table id="_ae2c7f95-e997-cb4f-c2c7-215ada329d0c" anchor="tbl-schema-functionproto"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_c47f6133-70ad-a7f0-c9ab-ae5642988392">Fields of <tt>FunctionProto</tt></name>
<thead><tr id="_0be6206a-8738-8914-a728-29bb7cf2025c"><th id="_b263d528-119b-61f0-1cd0-c2201c321a77" valign="top" align="left">Field</th>
<th id="_fc55fc18-a266-d812-a8bd-959ac683cb85" valign="top" align="left">Tag</th>
<th id="_255a4f0b-fa94-49fb-67e9-489dc5b82f80" valign="top" align="left">Wire type</th>
<th id="_f915ccee-d013-3e66-b96f-b8475d0076b5" valign="top" align="left">Type</th>
<th id="_7b0cc3f7-7553-16e9-8a13-2709e517c33e" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_0350ecc4-1912-21e9-4657-52c905d656ae"><td id="_1bf48080-8ad5-b58a-df93-609b463465eb" valign="top" align="left"><tt>name</tt></td>
<td id="_5a4ffff6-79a4-0786-0e56-5e569bb41297" valign="top" align="left">1</td>
<td id="_cb966ece-60d1-7e07-2953-a181a4020e8f" valign="top" align="left">2</td>
<td id="_32957ae2-d549-2c20-2b17-0c0fedb33566" valign="top" align="left"><tt>string</tt></td>
<td id="_616c71fc-a5e8-3792-cda3-3a16d52cd5e1" valign="top" align="left">optional</td>
</tr><tr id="_548ccbfa-7182-e421-e79d-a387f907796e"><td id="_562b3085-b2ed-183e-3665-c66641fe6448" valign="top" align="left"><tt>input</tt></td>
<td id="_fd5831c1-fadf-4b39-1643-b53da965febb" valign="top" align="left">4</td>
<td id="_56d9d37a-8aca-ab08-4207-0ca7bfa5639a" valign="top" align="left">2</td>
<td id="_c8230b88-4ca0-a1ea-b970-6743dca3c162" valign="top" align="left"><tt>string</tt></td>
<td id="_d86b1d41-d141-851e-dd8a-aae5bbe64dc5" valign="top" align="left">repeated</td>
</tr><tr id="_20fe458f-8946-9320-b93c-9aa85f23b10a"><td id="_8910ab9d-6412-81c1-3128-4ccd5e5005a3" valign="top" align="left"><tt>output</tt></td>
<td id="_d1168957-acc7-f2d2-6a86-3b1955777dd6" valign="top" align="left">5</td>
<td id="_82ae201e-0b62-77d2-ae6a-d8820f7f90f4" valign="top" align="left">2</td>
<td id="_438d1d28-a287-c1e1-923b-c6bc1fc34375" valign="top" align="left"><tt>string</tt></td>
<td id="_e739836a-67e9-435a-5b74-dd66756da29b" valign="top" align="left">repeated</td>
</tr><tr id="_7c8aa102-1134-7d83-2431-82ded113108d"><td id="_77973eb8-50ea-fe1e-8d83-65c35052eab0" valign="top" align="left"><tt>attribute</tt></td>
<td id="_839f1157-ce5e-3088-be39-d76f35897aa8" valign="top" align="left">6</td>
<td id="_40fa27f4-d384-608e-b83d-13c27d66af63" valign="top" align="left">2</td>
<td id="_81750a25-df40-7564-63ad-c8ac3691f12d" valign="top" align="left"><tt>string</tt></td>
<td id="_b682da3e-9c86-1d77-30d3-d24db7195634" valign="top" align="left">repeated</td>
</tr><tr id="_aa54cdc5-c9be-74b6-14b3-8f8a1e0124d7"><td id="_9a3ca0bf-9f2a-402e-c212-6a9771b39d5c" valign="top" align="left"><tt>attribute_proto</tt></td>
<td id="_2439742d-7a00-d25a-135b-b5a1f3ee93c7" valign="top" align="left">11</td>
<td id="_89f99cff-92d1-4f95-4cf2-0c246b244ab0" valign="top" align="left">2</td>
<td id="_b791322d-b5bf-8d9c-c120-450b2664627c" valign="top" align="left"><tt>AttributeProto</tt></td>
<td id="_9da5b341-149b-7c2e-dc32-64e5ff24a210" valign="top" align="left">repeated</td>
</tr><tr id="_b35add90-5b48-c8e9-9429-3bb58ba5b67a"><td id="_93960250-e4b7-9d99-cfde-e97c5a46671e" valign="top" align="left"><tt>node</tt></td>
<td id="_a5c2f979-34ff-00dc-f6bc-16b4eba4d762" valign="top" align="left">7</td>
<td id="_0c66bdd5-101c-d251-264e-161a5282b3a5" valign="top" align="left">2</td>
<td id="_ec6aa46b-0aee-1811-980b-9ddc27aacd62" valign="top" align="left"><tt>NodeProto</tt></td>
<td id="_82a1c008-e8ee-9fd9-2ab3-ec7fcd1abde2" valign="top" align="left">repeated</td>
</tr><tr id="_ec35a636-3ea1-3919-2fec-1fd004569450"><td id="_f5f89f45-59cf-69f9-ea78-64ce8b7cf726" valign="top" align="left"><tt>doc_string</tt></td>
<td id="_68e97a16-c5f5-a55d-e09b-e3308147229e" valign="top" align="left">8</td>
<td id="_ecb5ee8b-9a5c-9ee8-0f95-1e43acc54e9c" valign="top" align="left">2</td>
<td id="_fb7b2928-d169-2852-a86e-a3d95fea71cc" valign="top" align="left"><tt>string</tt></td>
<td id="_71168745-ba0e-0e2d-e287-21a85d217b56" valign="top" align="left">optional</td>
</tr><tr id="_3cb56e67-6dd0-6560-48b0-305b7d32da2c"><td id="_6ec6e646-e1cc-f4ae-8288-184ffac0d15e" valign="top" align="left"><tt>opset_import</tt></td>
<td id="_5973929c-3d23-cf72-4b3e-26b7a7196486" valign="top" align="left">9</td>
<td id="_89f5ce50-c287-e5b3-2a0a-10b4ef3f45e1" valign="top" align="left">2</td>
<td id="_fdd82454-cd49-65b4-a7d1-887ac102c1f1" valign="top" align="left"><tt>OperatorSetIdProto</tt></td>
<td id="_31389137-79b2-ce6a-d53a-a3a23ca22e89" valign="top" align="left">repeated</td>
</tr><tr id="_81e70b9b-c133-3fea-05ab-690e88ff4c12"><td id="_5b7e7dac-0c0c-6558-21f6-80107b7dea60" valign="top" align="left"><tt>domain</tt></td>
<td id="_1ad57888-6200-9ce3-d63d-0a06d65a59ef" valign="top" align="left">10</td>
<td id="_d422e9bd-eb84-3708-34e2-ecf5471f5402" valign="top" align="left">2</td>
<td id="_6b8a29b7-d182-06c5-a96b-555fe60acdf8" valign="top" align="left"><tt>string</tt></td>
<td id="_352e480e-346a-4d15-8275-64087365396d" valign="top" align="left">optional</td>
</tr><tr id="_1a317ac4-3fe6-b049-d885-2eaefc096b7d"><td id="_95cda58f-5d37-12a0-fcdf-b91b4e0aa4e0" valign="top" align="left"><tt>overload</tt></td>
<td id="_3dbc6c6b-342e-aa48-6fc6-37bc19983130" valign="top" align="left">13</td>
<td id="_3a563a47-477e-d6a9-489a-ede10716d953" valign="top" align="left">2</td>
<td id="_05ee5fa1-1e4c-67a4-f9e1-d38140c5f213" valign="top" align="left"><tt>string</tt></td>
<td id="_7413c481-7a8e-871a-1691-33337bba7794" valign="top" align="left">optional</td>
</tr><tr id="_60610452-c72e-dcca-ad25-4258d8028bb6"><td id="_a4f7cb03-a70c-c722-ce47-4f2e6f854d20" valign="top" align="left"><tt>value_info</tt></td>
<td id="_08f9f814-456c-f6d3-b596-e77144879300" valign="top" align="left">12</td>
<td id="_47eed962-9787-833e-25df-568273863307" valign="top" align="left">2</td>
<td id="_ed9a8942-2ffe-be2d-96fd-963d7ab6b4b0" valign="top" align="left"><tt>ValueInfoProto</tt></td>
<td id="_133fe094-e245-b119-d726-23a708408880" valign="top" align="left">repeated</td>
</tr><tr id="_db3b0c3a-7663-4596-f147-069994f37075"><td id="_9e05f0a0-8d13-cca3-0562-b5a7cd21f118" valign="top" align="left"><tt>metadata_props</tt></td>
<td id="_ebfff015-a842-ce18-772f-6a78db48234c" valign="top" align="left">14</td>
<td id="_6680f0a1-cf6c-ee0e-7554-05d9f300df35" valign="top" align="left">2</td>
<td id="_23ea1433-ac60-73ad-78a7-3bd204f4ad79" valign="top" align="left"><tt>StringStringEntryProto</tt></td>
<td id="_de7626d8-078d-c083-ce6f-afd76263ed10" valign="top" align="left">repeated</td>
</tr></tbody>
</table>

<p id="_d34d2d75-cb9d-ef13-ccad-0232627584a7">Tags and names reserved in <tt>FunctionProto</tt>, which SHALL NOT be used: <tt>2</tt>; <tt>"since_version"</tt>; <tt>3</tt>; <tt>"status"</tt>.</p>
</clause>
</clause>

<clause id="_89b108e9-aa70-319f-d66b-14da7c7eaa01" obligation="normative">
<title id="_d36c6950-d54f-2bc8-bd1a-9676f923ba58">Operator set messages</title>
<clause id="_257168f0-5215-e6c0-07e8-478206a7d560" anchor="schema-operatorproto" obligation="normative">
<title id="_bab7547f-da82-703d-3678-783553ee01ec">OperatorProto</title>
<table id="_9737cef1-475d-a86c-959a-4208c3ae4a4d" anchor="tbl-schema-operatorproto"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_c126b1c8-636a-a95a-11bd-e2dae1cab2de">Fields of <tt>OperatorProto</tt></name>
<thead><tr id="_2d611f98-29c0-3688-c6e1-f491ddc00182"><th id="_445d9b9f-4ec6-8647-6416-f58b1c821e70" valign="top" align="left">Field</th>
<th id="_230744de-e9b7-7c7d-ee5e-230f631d6470" valign="top" align="left">Tag</th>
<th id="_757200ba-e602-dbfe-2e06-f36ac49c3dd4" valign="top" align="left">Wire type</th>
<th id="_60def6a1-5756-28c6-0bd7-d938ade919a9" valign="top" align="left">Type</th>
<th id="_9fa92c07-4649-9903-269e-e61ed25a5b05" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_b6f4994b-d7c6-5661-d400-b8c348c0fad4"><td id="_abaf1ae5-5820-2270-4ba9-d2fb668361cf" valign="top" align="left"><tt>op_type</tt></td>
<td id="_e74087c5-a3e0-2c19-3f5f-245f4a942899" valign="top" align="left">1</td>
<td id="_2d3a8c87-3690-d15a-8139-690dc9316a68" valign="top" align="left">2</td>
<td id="_1764febd-465c-9554-65ac-4ed8a091f9ae" valign="top" align="left"><tt>string</tt></td>
<td id="_35573130-fee6-4ae0-07d1-de454ad2d78a" valign="top" align="left">mandatory</td>
</tr><tr id="_cb872c14-9b7d-8d19-8dad-88e8664a2213"><td id="_453bbd43-8e09-6860-6b49-9220cf996244" valign="top" align="left"><tt>since_version</tt></td>
<td id="_e10f0c69-21ff-98e8-8fd7-57a44a9be18f" valign="top" align="left">2</td>
<td id="_b20083bd-7021-621a-1c92-151dc5c39390" valign="top" align="left">0</td>
<td id="_bf4086fb-e750-4678-f647-331d3413f93a" valign="top" align="left"><tt>int64</tt></td>
<td id="_ea9d37dd-6731-ce12-bf6b-03da2552b3b5" valign="top" align="left">mandatory</td>
</tr><tr id="_7701c765-c774-6c38-21dc-b7e0b452c8e7"><td id="_2aa74500-7dc0-5030-bdf3-c8ffb1aa3dcc" valign="top" align="left"><tt>status</tt></td>
<td id="_c9ec09e9-2b84-3ef9-e23a-c4b65361f171" valign="top" align="left">3</td>
<td id="_c3a80a4c-3173-113e-f865-ed5b43536eee" valign="top" align="left">0</td>
<td id="_e478b4e8-55ac-641b-b923-e21b7a12828d" valign="top" align="left"><tt>OperatorStatus</tt></td>
<td id="_e02052ce-6d5a-747e-4bdc-29f61b55104c" valign="top" align="left">optional</td>
</tr><tr id="_28b95199-c716-693e-93b9-ddd05b8601c1"><td id="_cd066370-bf56-39a2-0e8a-c50fbf935517" valign="top" align="left"><tt>doc_string</tt></td>
<td id="_29e3725f-1238-7a11-4c05-3904ff594a90" valign="top" align="left">10</td>
<td id="_056b30d9-b893-24ef-85f5-4a8c860004e7" valign="top" align="left">2</td>
<td id="_77448bae-6960-daf5-e81a-2a3df3924429" valign="top" align="left"><tt>string</tt></td>
<td id="_a4c7a047-eec7-47a8-8918-6acc129058a7" valign="top" align="left">optional</td>
</tr></tbody>
</table>
</clause>

<clause id="_7b39e130-86b9-cdc8-ecb1-9deae4ce862d" anchor="schema-operatorsetproto" obligation="normative">
<title id="_ac0a70cc-1cc9-d074-cec9-c004ca97e40e">OperatorSetProto</title>
<table id="_ee42b74a-c38f-1435-2612-05069553ada1" anchor="tbl-schema-operatorsetproto"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_05e3d9f8-9d5b-945f-fe3c-86cd02975f09">Fields of <tt>OperatorSetProto</tt></name>
<thead><tr id="_5680dcbf-d7b9-6a82-35f4-2d061ce09a8d"><th id="_2bdd0379-40f6-6564-353d-b710c7856798" valign="top" align="left">Field</th>
<th id="_161d74cc-3db6-42e5-3c69-0316d404ffda" valign="top" align="left">Tag</th>
<th id="_1458dfa8-f486-64e6-5585-e2fa2b0cfa75" valign="top" align="left">Wire type</th>
<th id="_f4b84092-1d51-3abb-0517-d2320ac19bd9" valign="top" align="left">Type</th>
<th id="_c345c608-4ecb-e66e-ed32-13f74bd30c0e" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_0d053eb5-0fb3-98c6-01c0-0fea57d92aa7"><td id="_1db089f2-4630-b372-7217-f68c76799e1e" valign="top" align="left"><tt>magic</tt></td>
<td id="_390e67f4-8a74-b8e3-4352-d37a1345c84f" valign="top" align="left">1</td>
<td id="_b97f5067-e2ea-ac2b-fa3e-acbc55cedb29" valign="top" align="left">2</td>
<td id="_2466ae4c-692f-1439-422a-f27e00a45266" valign="top" align="left"><tt>string</tt></td>
<td id="_23f17aad-bb58-c2fa-b177-a0d382f57f9f" valign="top" align="left">mandatory</td>
</tr><tr id="_7ceee548-9561-00b2-300e-5cab7abf593d"><td id="_f08090a1-215c-2b64-55f7-801e5ae863ad" valign="top" align="left"><tt>ir_version</tt></td>
<td id="_7857a3fb-5f75-94ab-61db-f93fe7509265" valign="top" align="left">2</td>
<td id="_7f6615fe-7ce4-9eb4-4a7e-d4a5179cca6b" valign="top" align="left">0</td>
<td id="_0de12ca3-e801-e98a-7b7a-8049c36ffbed" valign="top" align="left"><tt>int64</tt></td>
<td id="_cfeab642-89bb-b5ba-2df2-ee2ba4af3df9" valign="top" align="left">mandatory</td>
</tr><tr id="_f54b61f1-bded-3455-13a4-6ff7198fb292"><td id="_82f6b7be-11c6-55c2-6cdd-a804bf6281e3" valign="top" align="left"><tt>ir_version_prerelease</tt></td>
<td id="_5317a600-58aa-cdfa-7402-a2f57b9ca4f4" valign="top" align="left">3</td>
<td id="_a5dd6d64-203b-bdfd-46a1-0731f21d9501" valign="top" align="left">2</td>
<td id="_1b06585c-50cc-028b-d8e3-cb8eabf51e6e" valign="top" align="left"><tt>string</tt></td>
<td id="_7ce2f5af-3ad0-3a5f-7d74-9ffbf017b660" valign="top" align="left">optional</td>
</tr><tr id="_3faf25c7-4715-0b5b-8dd8-abaaa915b8ad"><td id="_9add5255-4f2d-d93a-ffff-85d80ac71184" valign="top" align="left"><tt>ir_build_metadata</tt></td>
<td id="_e25e199d-a70c-8425-f480-f5d59438d0bc" valign="top" align="left">7</td>
<td id="_f94c0a2b-2898-3ecc-1872-21fb0aaa94a4" valign="top" align="left">2</td>
<td id="_09b794f0-6279-2657-0f4f-d64406ca81d6" valign="top" align="left"><tt>string</tt></td>
<td id="_5d2f45e9-075d-ec09-87af-071a3001dc1e" valign="top" align="left">optional</td>
</tr><tr id="_4c99544d-c2fd-6a23-c608-fd74ff8fc51f"><td id="_74806219-f03f-2834-4f12-2d278a54b101" valign="top" align="left"><tt>domain</tt></td>
<td id="_b24d5301-d0a3-07e4-3e7c-2c903599bef4" valign="top" align="left">4</td>
<td id="_18f59ed3-e4ca-1672-aa7e-8b87c1fd3aef" valign="top" align="left">2</td>
<td id="_6270ba2a-8556-1745-38e7-9ed3cb6676c7" valign="top" align="left"><tt>string</tt></td>
<td id="_4b71b02d-b56f-3699-71cb-fa321aedc27c" valign="top" align="left">optional</td>
</tr><tr id="_9e0044d9-caba-1b08-35dd-dff9ea215625"><td id="_8aaca113-f4c9-a9f3-e25f-88eff5b19a04" valign="top" align="left"><tt>opset_version</tt></td>
<td id="_5f19349e-295a-aef4-bae1-231c3fcdcc13" valign="top" align="left">5</td>
<td id="_584857eb-4b28-152f-b945-03f7b49aa3f4" valign="top" align="left">0</td>
<td id="_22b9dba6-734d-c900-8559-0633819dec56" valign="top" align="left"><tt>int64</tt></td>
<td id="_2af7d46f-0e99-9825-411e-fea9c6fd633a" valign="top" align="left">optional</td>
</tr><tr id="_a1c950b1-4df6-e3e6-7b39-3748a7c0dc3f"><td id="_36939119-3b88-9476-9550-9585542f6274" valign="top" align="left"><tt>doc_string</tt></td>
<td id="_070d7277-f687-0a3e-3777-8a7d4550ea2d" valign="top" align="left">6</td>
<td id="_4ddceda5-2cdd-0658-151c-648c4f10b082" valign="top" align="left">2</td>
<td id="_6c3b0463-8689-f9cf-a330-44e6cbfe0578" valign="top" align="left"><tt>string</tt></td>
<td id="_61e9f7ad-e35c-c61b-6802-d07c66e622e7" valign="top" align="left">optional</td>
</tr><tr id="_c19fd473-6048-2118-7d49-4f4698d32e88"><td id="_20a56355-9528-e276-ecf7-8bd5f4c595ae" valign="top" align="left"><tt>operator</tt></td>
<td id="_55acf14b-ca08-5d03-bc74-2a09ef76b9db" valign="top" align="left">8</td>
<td id="_24cd5ff6-e992-d9e2-a87c-c70e7108281c" valign="top" align="left">2</td>
<td id="_e4f6a4be-19ec-8890-79ee-294a0468772a" valign="top" align="left"><tt>OperatorProto</tt></td>
<td id="_d2658dbb-0dce-a8d0-1541-a592323d9d52" valign="top" align="left">repeated</td>
</tr><tr id="_00fba329-067e-1826-366d-20a60f1e2530"><td id="_17722d3f-465b-7424-cd81-945b0c5cbb7c" valign="top" align="left"><tt>functions</tt></td>
<td id="_301bb2b1-259b-0f34-250a-5892c44de116" valign="top" align="left">9</td>
<td id="_56f818d4-6da3-ac8e-cfff-cfde0a6f0958" valign="top" align="left">2</td>
<td id="_67ae064a-8fed-1575-f529-19897813444e" valign="top" align="left"><tt>FunctionProto</tt></td>
<td id="_f6d2ec53-0c75-3dfb-2db1-546e8a5b5589" valign="top" align="left">repeated</td>
</tr></tbody>
</table>
</clause>
</clause>

<clause id="_b7a5165b-d6ee-f0e4-bf2f-6957ae7939ad" obligation="normative">
<title id="_8e549fcb-eaec-df69-28f1-84af8d929795">Map and sequence messages</title>
<clause id="_43ccd776-e147-05bd-d104-f9ff84005298" anchor="schema-sequenceproto" obligation="normative">
<title id="_095c3893-81d7-2588-83f4-09de20dd44cf">SequenceProto</title>
<table id="_eb96efc7-5cfa-b9c2-00ae-02b61901e305" anchor="tbl-schema-sequenceproto"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_9b3fb153-9bf1-834a-5ae4-52e27a6f4ea5">Fields of <tt>SequenceProto</tt></name>
<thead><tr id="_66fb568f-7c4b-d5c3-5c6e-2610ecb199c3"><th id="_38217435-7847-98ed-5c33-968ce552fa11" valign="top" align="left">Field</th>
<th id="_93108be7-76ad-149d-1910-67b9afa19666" valign="top" align="left">Tag</th>
<th id="_bd739781-e7d2-6c9e-e5b5-735ba3e5ecf3" valign="top" align="left">Wire type</th>
<th id="_f1ecd8b3-0397-291c-ace5-c7582373b1d3" valign="top" align="left">Type</th>
<th id="_a774f5ea-17ba-9642-48a7-cfeb9fb3d3ca" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_57af1c82-6239-cdea-3d4e-952c99b220d3"><td id="_b4bd0707-730f-4976-8ea3-07c5d7e32131" valign="top" align="left"><tt>name</tt></td>
<td id="_0628f2c1-7d68-d538-d6fe-e3a208257d61" valign="top" align="left">1</td>
<td id="_01041f89-a0ee-539e-0966-f0c3bd6ed923" valign="top" align="left">2</td>
<td id="_0dd511ba-8463-e0b4-32a5-1e1a7c0ba3a7" valign="top" align="left"><tt>string</tt></td>
<td id="_811bafbc-1857-d14c-360a-59cf96c4d69d" valign="top" align="left">optional</td>
</tr><tr id="_d71f2a59-0809-2c20-f633-79391eeb3647"><td id="_bf7d49db-4ffb-b312-7e4e-50bad226d22c" valign="top" align="left"><tt>elem_type</tt></td>
<td id="_771e5132-f675-1bd2-f459-bb865a98d968" valign="top" align="left">2</td>
<td id="_cb0e6619-de26-d3a5-9976-3900394c38d3" valign="top" align="left">0</td>
<td id="_9d17d6f0-2854-6017-7452-0b2709586e97" valign="top" align="left"><tt>int32</tt></td>
<td id="_177db974-aba0-3fac-c218-e0546f47f7f9" valign="top" align="left">optional</td>
</tr><tr id="_71180d42-2937-9d86-14d4-88ec4724388d"><td id="_9ed0f435-053a-5c96-e7e2-2ad7e9f75b2e" valign="top" align="left"><tt>tensor_values</tt></td>
<td id="_3991cf67-0a7b-f327-c962-16e5f81b8691" valign="top" align="left">3</td>
<td id="_e66c919b-f157-5019-43ed-a98c0fef9d4e" valign="top" align="left">2</td>
<td id="_abe45e48-66bb-dba3-83b1-6328ee1e9625" valign="top" align="left"><tt>TensorProto</tt></td>
<td id="_d2800e56-8f6e-2418-7255-be8ac511e532" valign="top" align="left">repeated</td>
</tr><tr id="_8e58803f-28a2-8f79-4f5a-ec372e2393c9"><td id="_73f695d7-67ca-0fda-6c86-cb666d0f9c22" valign="top" align="left"><tt>sparse_tensor_values</tt></td>
<td id="_e54a1476-c155-83cf-b941-57556f32c4e4" valign="top" align="left">4</td>
<td id="_b10b9db4-2c1b-48f7-79c9-9361f64c564e" valign="top" align="left">2</td>
<td id="_9cde9bf8-07b3-5e68-6ead-ff2205ac280e" valign="top" align="left"><tt>SparseTensorProto</tt></td>
<td id="_0b2a2fd9-7f96-264a-bfa0-639133e0fd80" valign="top" align="left">repeated</td>
</tr><tr id="_2352edb0-0fb8-17fc-d14e-d6d7d39e4235"><td id="_2216965b-6ef5-d4bb-31da-ed6fd19fe49b" valign="top" align="left"><tt>sequence_values</tt></td>
<td id="_5ca5c869-ba97-f5bc-3740-c6fe6f14838d" valign="top" align="left">5</td>
<td id="_f8ef3d8d-92d5-0359-8a28-bea9d5b3f93d" valign="top" align="left">2</td>
<td id="_7075d229-1b2b-5641-cffc-602a9975d038" valign="top" align="left"><tt>SequenceProto</tt></td>
<td id="_c12570ac-e92d-f945-abb0-1f6200f6894a" valign="top" align="left">repeated</td>
</tr><tr id="_e8b21c98-9a97-ac29-695e-a4484a5acf52"><td id="_0ac0fea2-6064-3d23-aee4-3c1b1a24518c" valign="top" align="left"><tt>map_values</tt></td>
<td id="_7c2f5320-93ff-7ea4-3853-aa83ad5e5711" valign="top" align="left">6</td>
<td id="_59b696a0-22c3-f80f-0f56-21948dfaef43" valign="top" align="left">2</td>
<td id="_ebd2b41f-00a8-0ec6-5e13-123cda9e9da0" valign="top" align="left"><tt>MapProto</tt></td>
<td id="_a5072ff6-71e9-ac91-fcaa-0e02ebb8b383" valign="top" align="left">repeated</td>
</tr><tr id="_cdb71511-02b2-f040-a3ee-2f45b35f9758"><td id="_eda5ef9c-8ccc-a921-d0d2-f3a386ae49c8" valign="top" align="left"><tt>optional_values</tt></td>
<td id="_1e6caba3-d1a5-d91c-bafa-e41c8a4d7284" valign="top" align="left">7</td>
<td id="_44f62e98-aa31-a954-1c5c-3d59f1e5847c" valign="top" align="left">2</td>
<td id="_4916684e-9e8d-6e4a-2b63-1559230f0bbe" valign="top" align="left"><tt>OptionalProto</tt></td>
<td id="_db30fd1d-59be-c424-feaa-02ab799cd904" valign="top" align="left">repeated</td>
</tr></tbody>
</table>

<table id="_a678ba71-ac9b-28c0-0695-fe4eb254b586" anchor="tbl-schema-sequenceproto-datatype"><colgroup><col width="75%"/><col width="25%"/></colgroup>
<name id="_20b2094b-2ac8-fec5-a045-d312ceeebf3d">Values of <tt>SequenceProto.DataType</tt></name>
<thead><tr id="_c32cd268-6e62-6bde-2a51-434bc8492960"><th id="_cb01c1f7-2249-393e-3366-3efbb70a7550" valign="top" align="left">Name</th>
<th id="_69552d95-211c-e7fc-9268-51201fcc8bb8" valign="top" align="left">Value</th>
</tr></thead>
<tbody><tr id="_8f79a51f-1c68-9dca-b1b3-cefadaa86f10"><td id="_03ea9508-1bb7-ef90-b769-9c32b13ff290" valign="top" align="left"><tt>UNDEFINED</tt></td>
<td id="_24f1f542-29f0-80e2-209d-4d65508aa799" valign="top" align="left">0</td>
</tr><tr id="_6cf3ee3a-c0ab-b151-ee89-4d3a3c8c79db"><td id="_bcaa89bf-da3b-9049-1e57-af5bd9ac2b81" valign="top" align="left"><tt>TENSOR</tt></td>
<td id="_a5796650-4cc0-bdb7-65f0-65234490c41d" valign="top" align="left">1</td>
</tr><tr id="_67421401-11a0-50c5-74bd-6ddfe473678e"><td id="_19e3c4f7-f273-2143-c4ca-b7f0794b6cc3" valign="top" align="left"><tt>SPARSE_TENSOR</tt></td>
<td id="_94d4032e-1de6-069b-1f13-7abedd4d66fc" valign="top" align="left">2</td>
</tr><tr id="_f97f8bb9-85f5-155b-11c3-e92f7e4674f4"><td id="_30dc82e9-c81b-05f9-79d2-02a90439768e" valign="top" align="left"><tt>SEQUENCE</tt></td>
<td id="_6c12ab81-ce06-b0fd-244a-baf4d10a4609" valign="top" align="left">3</td>
</tr><tr id="_34c9206a-3335-cf19-5289-8cb990a9726a"><td id="_45a1bc66-7f0a-7c34-8c06-07406f2e4ebd" valign="top" align="left"><tt>MAP</tt></td>
<td id="_0820875b-3a45-3c2e-a752-8a4e5c2390c4" valign="top" align="left">4</td>
</tr><tr id="_a30e4a86-1859-296b-0058-012110aa95bf"><td id="_adc5bc6e-c510-6cca-ed71-d3c73ff550b6" valign="top" align="left"><tt>OPTIONAL</tt></td>
<td id="_eda79cc8-e845-271f-0ad9-fb88ec792d6c" valign="top" align="left">5</td>
</tr></tbody>
</table>
</clause>

<clause id="_8e65263e-7a4f-7d5e-2c52-24a729042b23" anchor="schema-mapproto" obligation="normative">
<title id="_297ce76c-edf6-50a6-54f1-04c18af79b15">MapProto</title>
<table id="_8c88303b-1f22-3d82-3ea5-b0a5df70307d" anchor="tbl-schema-mapproto"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_defc393c-d3a6-121b-ac48-1d02b06c9692">Fields of <tt>MapProto</tt></name>
<thead><tr id="_b59a11a6-4d4f-a763-6281-c9eed3951aaf"><th id="_f32de55f-f2c7-024d-4b1b-d42efddaea2d" valign="top" align="left">Field</th>
<th id="_b0d79e57-3aee-ac57-cc3a-bf3ab7097a75" valign="top" align="left">Tag</th>
<th id="_8c5861bf-18b0-dea0-e2f6-e662bb6c362c" valign="top" align="left">Wire type</th>
<th id="_1a4f4d41-3737-1eb2-5251-a563a2bf6378" valign="top" align="left">Type</th>
<th id="_bd78ad40-6392-a3b7-2930-2b23648521c4" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_ff85a363-84a3-9880-85da-3d46494b3455"><td id="_79bb59df-cebb-694b-4247-c3536f8749e7" valign="top" align="left"><tt>name</tt></td>
<td id="_c9621036-a07b-59c5-bda4-c0d966d6f5e0" valign="top" align="left">1</td>
<td id="_415e9159-b438-ef0d-c750-5e87bd78b6ea" valign="top" align="left">2</td>
<td id="_04bda74e-b421-c42f-e03c-f29444c19128" valign="top" align="left"><tt>string</tt></td>
<td id="_c1a62af3-a413-1a79-a812-4e125e753180" valign="top" align="left">optional</td>
</tr><tr id="_33765e93-e2e0-7fd2-f235-7ac7b823e204"><td id="_5334ae95-4090-3e90-8535-3c05ddddeefe" valign="top" align="left"><tt>key_type</tt></td>
<td id="_8fdb1685-21aa-1d31-d6d2-784eff30112d" valign="top" align="left">2</td>
<td id="_e185c251-1d14-fe30-8879-b3a0f3277342" valign="top" align="left">0</td>
<td id="_50d18900-6a41-9e20-5b0e-ded4b6cd1422" valign="top" align="left"><tt>int32</tt></td>
<td id="_7b987d36-98e4-803b-cdc3-559fca570d59" valign="top" align="left">optional</td>
</tr><tr id="_dd4eb485-6002-0eba-5c0d-5cf5a075b68c"><td id="_11882afe-967d-afbe-8d68-5b06daf930cf" valign="top" align="left"><tt>keys</tt></td>
<td id="_08ce19b9-5563-2d32-096f-951ce7d9ff28" valign="top" align="left">3</td>
<td id="_e286f72a-dbd3-abc1-d30a-41fa5563fcb1" valign="top" align="left">0</td>
<td id="_c256d9e1-860d-c4f2-9a90-fd79d94a1f78" valign="top" align="left"><tt>int64</tt></td>
<td id="_7e56331d-08b9-a2ca-f862-3a283f4cfdd7" valign="top" align="left">repeated</td>
</tr><tr id="_e2d783eb-c6f8-7f61-d86b-7dcb99e01682"><td id="_63bb4802-3b93-f6e6-9032-5a18a67a9cdf" valign="top" align="left"><tt>string_keys</tt></td>
<td id="_4b9d00d8-e148-0b64-38fb-64013566d65e" valign="top" align="left">4</td>
<td id="_2ec59e4a-7ec5-583a-aa63-68e01082d234" valign="top" align="left">2</td>
<td id="_7b990d59-01f0-60a1-9bef-5f4d32e9d013" valign="top" align="left"><tt>bytes</tt></td>
<td id="_b0818c4f-d072-3dea-aca9-a8fdeee97bfe" valign="top" align="left">repeated</td>
</tr><tr id="_099659f0-4575-1774-32ff-87fc96c66b52"><td id="_7114aafb-fd11-f0b0-e6ae-ce13337712ce" valign="top" align="left"><tt>values</tt></td>
<td id="_dcbcf401-c536-6d04-839a-cbd4044f4ba6" valign="top" align="left">5</td>
<td id="_367c8641-12b9-17c7-0bfc-93565dee4e5e" valign="top" align="left">2</td>
<td id="_62c10cb8-8d28-5531-7823-fb1d7fdb863b" valign="top" align="left"><tt>SequenceProto</tt></td>
<td id="_65c0c6bc-6c34-ac19-3796-8a43b3720fb5" valign="top" align="left">optional</td>
</tr></tbody>
</table>
</clause>

<clause id="_d5fed6c0-e9ba-b7ed-d980-9a86d5ddd8a8" anchor="schema-optionalproto" obligation="normative">
<title id="_e5149ad5-a718-583b-6615-8aa18d9d4bd5">OptionalProto</title>
<table id="_2d83bbf3-64e2-38c9-adf5-1256fb8037a9" anchor="tbl-schema-optionalproto"><colgroup><col width="30%"/><col width="10%"/><col width="10%"/><col width="30%"/><col width="20%"/></colgroup>
<name id="_58425434-191b-582c-97a7-8c8ce8ffd894">Fields of <tt>OptionalProto</tt></name>
<thead><tr id="_7d3e78d9-153c-0566-c3ab-1db1e07c7ad8"><th id="_618fb830-902d-2886-53e5-f2a03390ced3" valign="top" align="left">Field</th>
<th id="_e64129cb-41a6-eba0-7453-5f71da0ee71c" valign="top" align="left">Tag</th>
<th id="_81da9ef5-69a2-3bd6-cde7-05b384d4bfef" valign="top" align="left">Wire type</th>
<th id="_d32dbc6b-7e07-1804-a478-7d13afd23cd0" valign="top" align="left">Type</th>
<th id="_bb8458a9-bcd8-72c8-f1a4-a53a49513f53" valign="top" align="left">Obligation</th>
</tr></thead>
<tbody><tr id="_98e80c9f-a738-f452-222b-3124662f864b"><td id="_a7f69abb-5970-169c-84a9-52862d130a02" valign="top" align="left"><tt>name</tt></td>
<td id="_d25a3fd0-97ab-cc09-5788-c4c44885bef2" valign="top" align="left">1</td>
<td id="_8895f0d6-a23e-6ac0-b5ec-9e9c8f061d4f" valign="top" align="left">2</td>
<td id="_9a8ded35-1d26-0851-61f2-b0c41c0812e6" valign="top" align="left"><tt>string</tt></td>
<td id="_91ab7f7b-7618-5099-2933-72b0c0d6ab47" valign="top" align="left">optional</td>
</tr><tr id="_3f122e5f-a89a-b1d6-4060-e2214fe0cead"><td id="_bb3ecc2e-6c96-4cad-3c28-0a86edd25d02" valign="top" align="left"><tt>elem_type</tt></td>
<td id="_0edc9ae9-cf11-8c39-dcec-988c54bd9e2a" valign="top" align="left">2</td>
<td id="_5f106be9-933f-36ff-3416-3cca1593625c" valign="top" align="left">0</td>
<td id="_5ca1b3b4-d0ec-9f8f-9015-9047a79e261c" valign="top" align="left"><tt>int32</tt></td>
<td id="_9ab916d4-4d60-6036-0142-319bccebcdf5" valign="top" align="left">optional</td>
</tr><tr id="_ce11fafd-1d98-605b-9367-538ebe0736a7"><td id="_ab406c2f-8400-684e-d315-f8b8ccfd6c4d" valign="top" align="left"><tt>tensor_value</tt></td>
<td id="_31f62a72-4d62-39d5-b0e6-690b9d69c076" valign="top" align="left">3</td>
<td id="_5626000c-abe1-fb6a-84c4-4c5787cb0566" valign="top" align="left">2</td>
<td id="_2070c25b-fb0a-3648-ee6b-348182310ad5" valign="top" align="left"><tt>TensorProto</tt></td>
<td id="_b6f72da2-283a-0dee-bb07-dd3febcce39b" valign="top" align="left">optional</td>
</tr><tr id="_c6de0eea-2462-9a56-f2c9-480ab5f68b69"><td id="_063c5281-56b7-4bf2-50cc-bfea61a423ec" valign="top" align="left"><tt>sparse_tensor_value</tt></td>
<td id="_b3953c4f-83e2-a0bc-9510-93a39fabda56" valign="top" align="left">4</td>
<td id="_1e8ad1fe-095b-f0a4-af9a-c5601247f515" valign="top" align="left">2</td>
<td id="_2cbfad99-4ef5-8777-1418-2547e7cd3e99" valign="top" align="left"><tt>SparseTensorProto</tt></td>
<td id="_06468f50-afd5-0328-0735-6af379498806" valign="top" align="left">optional</td>
</tr><tr id="_0b531e06-dea2-80e1-8938-7fa886c4848c"><td id="_dc472518-78f8-06db-8b61-41ece290350b" valign="top" align="left"><tt>sequence_value</tt></td>
<td id="_edc9fe9d-fe85-9e4a-c633-077fc6d297cf" valign="top" align="left">5</td>
<td id="_9f67d105-4c8d-ddde-69ba-62d0137ecbec" valign="top" align="left">2</td>
<td id="_3a02b192-c7ee-f8ac-480f-ef0cf55374e0" valign="top" align="left"><tt>SequenceProto</tt></td>
<td id="_dbe83c8a-527f-e0d2-8035-b402fdb7601f" valign="top" align="left">optional</td>
</tr><tr id="_8fe7da48-9cf5-d3db-10f2-66103e8676e9"><td id="_0d84d3e7-bb2a-e34f-bf7d-05173e4b43f8" valign="top" align="left"><tt>map_value</tt></td>
<td id="_8c8e112f-b5ed-e848-bdba-1a403b7c9e64" valign="top" align="left">6</td>
<td id="_f2939e14-fa9b-4611-5717-e4a0e1008420" valign="top" align="left">2</td>
<td id="_2d41d28d-3654-c821-bd3f-cb2dc70e59c6" valign="top" align="left"><tt>MapProto</tt></td>
<td id="_f178d575-426e-42ea-b0c6-f15d805bd021" valign="top" align="left">optional</td>
</tr><tr id="_7fa31894-d72d-d8e1-d3bb-b5785b408148"><td id="_d1204848-81d3-0b4b-3024-348ccf71925b" valign="top" align="left"><tt>optional_value</tt></td>
<td id="_ef19183d-c0a8-a201-9305-b5095d6de80b" valign="top" align="left">7</td>
<td id="_849661f0-4a84-c8dd-34fc-de7310e5892a" valign="top" align="left">2</td>
<td id="_12bdbec2-4c4e-c56c-9216-135e3df5c2b4" valign="top" align="left"><tt>OptionalProto</tt></td>
<td id="_8862220d-73af-d63a-7362-8b8e3093f9c5" valign="top" align="left">optional</td>
</tr></tbody>
</table>

<table id="_50fd116d-e8de-3f12-3da1-599a3da5b831" anchor="tbl-schema-optionalproto-datatype"><colgroup><col width="75%"/><col width="25%"/></colgroup>
<name id="_68fb7f84-65d4-eb32-a995-c54773dd3429">Values of <tt>OptionalProto.DataType</tt></name>
<thead><tr id="_88b43881-1b1b-55aa-136d-c9ad38375c1b"><th id="_df9ec472-9003-0daa-eb5c-49a919afa9c1" valign="top" align="left">Name</th>
<th id="_32aad115-cf12-852c-0a23-6e96e84f39e8" valign="top" align="left">Value</th>
</tr></thead>
<tbody><tr id="_51d87a93-b52f-986c-3397-255039b845ed"><td id="_877ef2d7-36de-ad73-a3f2-b1b699e21f6a" valign="top" align="left"><tt>UNDEFINED</tt></td>
<td id="_d17fe093-b527-3f8e-840a-21afa8f3dc57" valign="top" align="left">0</td>
</tr><tr id="_6c0928e8-868b-77f6-161d-7335a4da104b"><td id="_203e3958-aa8e-0d3e-bfbd-0ca6aa8d9828" valign="top" align="left"><tt>TENSOR</tt></td>
<td id="_89b5e698-6ac6-8f4e-9f7c-5fdf8d529a54" valign="top" align="left">1</td>
</tr><tr id="_1c7fd233-7d56-83fa-c915-de54a45efb84"><td id="_e3bf244f-8bc0-3a2c-a945-c9616f9902b3" valign="top" align="left"><tt>SPARSE_TENSOR</tt></td>
<td id="_e500a252-918a-e707-b83f-000e102e924e" valign="top" align="left">2</td>
</tr><tr id="_bbf29c0f-e27a-7fbf-ba44-c896341cff0e"><td id="_828a2109-8167-ce4c-ae51-68e8dd97d90b" valign="top" align="left"><tt>SEQUENCE</tt></td>
<td id="_ee2251f3-9f5f-5aee-770e-4b17a9947fdc" valign="top" align="left">3</td>
</tr><tr id="_8c7e2f01-096d-25bc-6c58-a0ff4411385e"><td id="_c081502c-c159-a466-b30a-34fb820a564d" valign="top" align="left"><tt>MAP</tt></td>
<td id="_dc22a509-fde1-f978-3c94-d1069e084226" valign="top" align="left">4</td>
</tr><tr id="_85e0fd42-be62-9089-e05f-3b8205c5c1b0"><td id="_1710f63d-ccdc-0555-418c-09dc6c338abe" valign="top" align="left"><tt>OPTIONAL</tt></td>
<td id="_d5df15bf-f674-4c92-e5e0-3458589fbde6" valign="top" align="left">5</td>
</tr></tbody>
</table>
</clause>
</clause>

<clause id="_b36cd795-bf61-2e50-60d5-d6f50e403315" obligation="normative">
<title id="_78a58430-362a-da46-50f0-802c0ddca809">Derivation</title>
<p id="_47025bc4-bef0-ac7d-13c8-0e9697256fe6">The tables above are derived from the Protocol Buffers schema of the ONNX reference implementation, vendored in the repository at <tt>upstream/onnx/proto/</tt> at the release recorded in <tt>upstream/onnx/SOURCE.txt</tt>. That schema is an informative aid, not a normative reference: the tables above are normative, and where a comment in the schema carries a normative statement, that statement is in the clause it belongs to. See <xref target="protobuf-relationship" style="short"/>.</p>
</clause>
</annex><annex id="_78b7a6e3-ca25-b4a8-1832-2c18fd6c61a4" obligation="informative">
<title id="_2c641673-897c-79ed-f0ca-54c221c4b044">Known gaps and divergences</title>
<clause id="_fbc020bb-6bad-43a0-8ac3-1510ca9f825d" obligation="informative">
<title id="_07289dd3-b7c8-9f7a-c438-01830cc0c1d1">Open gaps</title>
<p id="_d87ed40e-220b-307f-94d4-c9125ee4612b">This annex records, for the working group’s use, the points at which the present ONNX specification and its reference implementation do not yet supply what a normative standard requires. It is informative and is expected to shrink to nothing before this document is submitted anywhere.</p>

<p id="_9440061d-e929-1538-3b08-c7cc961fedd6">Every clause carrying an editorial note has at least one row here. A row may
cover several related notes in the same clause; a clause with a note and no row
is an omission.<note id="_7a94182b-bb5f-3278-f8ec-a653943a1e66"><p id="_8976fd90-b9f6-7b75-7ac6-20fb37998759">A gap recorded here is a gap in the source material, not a clause left unwritten out of inattention. Where the ONNX documentation states a rule, this document states it; the rows below are what it does not state, or states in a form a standard cannot adopt.</p>
</note></p>



<table id="_a6683634-3b3f-5a16-417d-4e38a3a60f20"><colgroup><col width="20%"/><col width="60%"/><col width="20%"/></colgroup>
<name id="_e45ceb2d-adfc-61a6-611b-a4ba32c4191e">Known gaps between current ONNX practice and this document</name>
<thead><tr id="_cf60b262-1fbe-5434-40e1-430cf980196a"><th id="_9cb2d514-e413-0cec-1a59-8163e8c9a173" valign="top" align="left">Clause</th>
<th id="_7d2ee265-365e-2ec9-945c-c8436dac7ca2" valign="top" align="left">Gap</th>
<th id="_143ff669-3386-1e56-96f4-d6ded6995307" valign="top" align="left">Severity</th>
</tr></thead>
<tbody><tr id="_1fb834e6-5235-cdca-4d2d-2631c1239922"><td id="_180bee4d-c236-d185-2db9-e3f125e4ef04" valign="top" align="left"><xref target="tolerances" style="short"/></td>
<td id="_2ba64bc3-ca00-e0c8-043c-41be310ac4c7" valign="top" align="left">No specified numerical tolerance; the test suite’s tolerances are a harness   convention.  <xref target="reduced-precision" style="short"/> now states the conversion and saturation   rules of the narrow types, but a tolerance does not follow from them, and    <eref type="inline" bibitemid="onnx-part-3" citeas="ONNX 1-3"/> cannot pass or fail a vector without one.</td>
<td id="_0c22dab1-d1cf-10fa-5de0-697e68f645df" valign="top" align="left">Blocking</td>
</tr><tr id="_909d7681-6d90-d53a-f9cd-fd5bdf35af60"><td id="_bb36f05d-a9e5-d04b-3029-5c689ff92f10" valign="top" align="left"><xref target="validation-clause" style="short"/></td>
<td id="_704b68f3-d54d-2a13-f195-95ad4c9d89eb" valign="top" align="left">The checks a validating consumer owes are drafted but not yet stated as   testable conditions with severities.</td>
<td id="_ed9e5256-1814-2094-0365-e4d2af48f8ae" valign="top" align="left">Blocking</td>
</tr><tr id="_00bc0a56-31af-f50c-eade-d52d47729607"><td id="_332112fa-14f8-5fe9-33c6-7fe47588ad88" valign="top" align="left"><eref type="inline" bibitemid="onnx-part-2" citeas="ONNX 1-2"/> Clauses 5, 6</td>
<td id="_8d800987-8f0e-fa16-72ef-dc2f64bf9dc8" valign="top" align="left">The generated operator clauses supply shape inference, determinism and error   conditions for 0 of 222 operators: the upstream documentation states none of   them. They cannot be generated and have to be written per operator.</td>
<td id="_44bade73-a5e2-bf2a-4073-567fa93d56d8" valign="top" align="left">Blocking</td>
</tr><tr id="_f73f07cd-ead8-114f-1319-0ab01aafd932"><td id="_5e3e3b65-1d8c-6a06-21e4-1ddbdc7cb8a6" valign="top" align="left"><xref target="reduced-precision" style="short"/> (conversion)</td>
<td id="_178722a7-0d96-e07f-da66-0e93a4ab01f5" valign="top" align="left">Whether a conversion to a narrow floating-point type saturates or yields NaN   is settled per operator, by an attribute of  <tt>Cast</tt>, rather than per type, so   one model can convert the same pair of types both ways. And the result of   converting an out-of-range value to a narrow integer type is unstated: the   source says the value is truncated without saying to what.</td>
<td id="_51cb9e03-cf67-5bfa-f924-0896a501282f" valign="top" align="left">Major</td>
</tr><tr id="_2fcc1e32-79e7-5a02-71bd-ec401773ef82"><td id="_50401fbe-fc19-00d6-6b40-c012f94613e4" valign="top" align="left"><xref target="string-elements" style="short"/></td>
<td id="_e4106db2-4f6e-d174-821e-27ecac0b2c81" valign="top" align="left"><tt>STRING</tt> elements are octet strings in the implementation and UTF-8 by   assumption in much tooling. The upstream documentation does not settle it.</td>
<td id="_e3fc063a-bbca-fcc3-b1ba-37789f1a786f" valign="top" align="left">Major</td>
</tr><tr id="_e7219d4a-0aa9-688a-13b6-5781b3a8e8e3"><td id="_288e4c5a-dafa-70d7-474a-ac661846827e" valign="top" align="left">Clause 6 (type equality)</td>
<td id="_9fc5545a-1e66-5e67-8b04-f33d797d86b9" valign="top" align="left">When two types are equal, and when a value of one type may be supplied where   another is expected, is unstated; this bounds what  <xref target="inference" style="short"/> must prove.   The upstream documentation does not state it either.</td>
<td id="_d8275844-c460-ed09-313e-4d394b722987" valign="top" align="left">Major</td>
</tr><tr id="_156e7598-1f85-171d-3c0d-024641bc0c4f"><td id="_9548a76a-1b8f-2f93-9849-926641474cde" valign="top" align="left"><xref target="graph-semantics" style="short"/> (control flow)</td>
<td id="_55510af7-f9b4-f49e-4167-bb2d421042f9" valign="top" align="left">The evaluation semantics of <tt>If</tt>, <tt>Loop</tt> and <tt>Scan</tt> are unwritten here. The   structural rules are now in  <xref target="subgraph-scoping" style="short"/>; upstream states the   semantics only in the operator definitions, which is to say in    <eref type="inline" bibitemid="onnx-part-2" citeas="ONNX 1-2"/>, so Clause 8 of this part and Clause 5 of that one have to be   reconciled.</td>
<td id="_0d07fca1-3d54-603b-f94d-844346e33e78" valign="top" align="left">Major</td>
</tr><tr id="_e88ddae7-8aef-4b6a-7fae-90b04f1ad97c"><td id="_1c8d2d6e-6464-9f41-9dfb-29b1ded2f30d" valign="top" align="left"><xref target="graph-semantics" style="short"/> (determinism)</td>
<td id="_5deaf0a9-ca0e-d51b-8792-d15604e26449" valign="top" align="left">No statement of which operators may be non-deterministic. <xref target="graph-semantics" style="short"/>   now requires a model to be a stateless function save where an operator is   permitted to be otherwise; the set of such operators is still unstated.</td>
<td id="_d1e1cfb0-65dd-3a92-7112-52ca9097f8ea" valign="top" align="left">Major</td>
</tr><tr id="_e2809878-830c-8aa0-250b-e11022605efc"><td id="_6dfa0bf1-aa7c-9a8a-004f-db408d984ec2" valign="top" align="left"><xref target="numerical" style="short"/> (special values, reassociation)</td>
<td id="_2183ab72-3472-6e5e-96fb-6a475dd66644" valign="top" align="left">NaN and infinity behaviour, and the permitted reassociation, are unwritten;   the tolerance cannot be derived until they are.</td>
<td id="_24790052-6f62-bf19-b62b-3677ce2520e3" valign="top" align="left">Major</td>
</tr><tr id="_67b4699d-14c6-efb8-4584-9f36b3b1eaa2"><td id="_caee122d-feda-36e0-6efd-b2516914a686" valign="top" align="left"><xref target="versioning" style="short"/> (compatibility)</td>
<td id="_9432c872-dffa-fac2-bae3-7f9cdfd563d5" valign="top" align="left">Backward compatibility is stated as an obligation here; runtimes do not   universally meet it.</td>
<td id="_80244c42-d6d3-ea91-5812-1ed6c7b9e524" valign="top" align="left">Major</td>
</tr><tr id="_446ce2ce-c79d-ff1c-8121-301e32b805b3"><td id="_41090bfd-171f-68bf-dc7b-a9e488722078" valign="top" align="left"><xref target="versioning" style="short"/>, <eref type="inline" bibitemid="onnx-part-2" citeas="ONNX 1-2"/></td>
<td id="_56682438-b2dd-a8bd-7f8a-c5df537d7c57" valign="top" align="left">Clause 14.5 requires a consumer to keep evaluating a deprecated operator, but   upstream stops documenting the inputs, outputs and type constraints of one   once deprecated. Four operators are in that state, so their signature cannot   be implemented from the documentation at all.</td>
<td id="_c3ba3e28-ecf1-22c4-0923-7a4ec040baa8" valign="top" align="left">Major</td>
</tr><tr id="_4cc01649-a213-c0b5-7f59-460b3c5f16a8"><td id="_dc15c26c-0fc4-2250-b0a0-f44f3207b0c5" valign="top" align="left"><xref target="serialization" style="short"/> (limits)</td>
<td id="_4e8aeca0-f232-5414-f586-f4e1d8cdf3f2" valign="top" align="left">No maximum message size is stated. The rest of the encoding is now specified   in  <xref target="serialization" style="short"/>, but the reference implementation applies a limit of 2   gigabytes to a single message and this document neither fixes that nor   leaves it explicitly to the implementation.</td>
<td id="_3eeb8550-7130-1d70-a87a-15afa841e54b" valign="top" align="left">Minor</td>
</tr><tr id="_70af9f87-5df9-3278-fac5-01f5c187a444"><td id="_9cc0cec0-35a8-d093-dd1a-dc825491bec2" valign="top" align="left"><xref target="annex-schema" style="short"/></td>
<td id="_cfacecfe-1494-9573-0e03-4308c3678c3f" valign="top" align="left">The annex states which fields are mandatory at one IR version, being the one    <xref target="ir-version-specified" style="short"/> names. The schema source carries no history of the   obligations, so a model produced against an earlier IR version cannot be   checked against this annex, and  <xref target="compatibility" style="short"/> requires that it can be.</td>
<td id="_7bbe8d3c-f86c-a556-0460-2f9cb907e8eb" valign="top" align="left">Major</td>
</tr><tr id="_e010c4dc-22fc-093f-7fd1-23b9d12842c6"><td id="_4ee84708-818e-2b97-fbee-da441de5da73" valign="top" align="left"><xref target="external-integrity" style="short"/></td>
<td id="_e72e83af-e78f-5818-6b94-b0590e1a366e" valign="top" align="left">The digest an external reference may carry is SHA-1, which is not fit for   data from an untrusted source, and it covers the file rather than the octets   a reference selects. Resolution itself is now specified in    <xref target="external-reference" style="short"/>.</td>
<td id="_312e8521-2601-a83f-e53c-87e697d240bd" valign="top" align="left">Major</td>
</tr><tr id="_c4870154-a168-d454-4cc0-e7cb8d27ad45"><td id="_afa81ac2-f6da-1556-c185-2264ccc8e87c" valign="top" align="left"><xref target="inference" style="short"/></td>
<td id="_ad5d5299-9183-e78a-5463-369a20294316" valign="top" align="left">Which operators are required to be inferable is unstated.    <xref target="inference-obligations" style="short"/> requires an inference function of every operator;   upstream requires one of none, and leaves the values downstream of an   operator without one unknown. The two positions have to be reconciled.</td>
<td id="_b538a908-3dde-597f-39c8-b3b03a23cbef" valign="top" align="left">Major</td>
</tr><tr id="_52108c92-1194-2121-6d2d-5c42c45964dc"><td id="_670607ba-4e24-b459-7990-55aabc51d6bb" valign="top" align="left">Clause 4 (profiles)</td>
<td id="_36a77ff3-2bd7-b406-493e-fd7575757ae7" valign="top" align="left">No conformance profile is defined, so the class system has no granularity.</td>
<td id="_b319fadb-585c-b550-8ebf-9041c47105e6" valign="top" align="left">Minor</td>
</tr><tr id="_101430a2-1fd2-7cdd-b541-39014a77fd08"><td id="_ea65604e-e142-ad8c-d790-75b100a54fb1" valign="top" align="left"><xref target="canonical-form" style="short"/></td>
<td id="_6a5ad17d-c9eb-5f79-c6d4-371b8abc2758" valign="top" align="left">No canonical serialization, blocking model signing and reproducible hashes.</td>
<td id="_ad73d9a2-f773-4640-9a60-024bf5dec402" valign="top" align="left">Minor</td>
</tr><tr id="_931a5919-0fd5-3924-dcc9-d0197e16877e"><td id="_cdf4e0c8-0c21-4be0-6bd1-f780cf5975ee" valign="top" align="left"><xref target="maintenance" style="short"/> (amendment)</td>
<td id="_8db15bed-5bda-2704-558b-3c3ba475b5ab" valign="top" align="left">The amendment process for this part, and its relationship to the release   cadence of  <eref type="inline" bibitemid="onnx-part-2" citeas="ONNX 1-2"/>, is unwritten. The status of experimental   operators is now settled in  <xref target="maintenance" style="short"/>.</td>
<td id="_d521537c-7097-f4f5-086e-0455435debb3" valign="top" align="left">Minor</td>
</tr><tr id="_ce75566d-25be-f9f3-57f6-fed67698ab61"><td id="_58a5ffdb-2b54-c3b2-4631-132c6284cdfc" valign="top" align="left"><xref target="initializers" style="short"/></td>
<td id="_d4eaa87a-3fa0-d4d0-0c8e-e40722b19ac5" valign="top" align="left">The relationship between an initializer and a graph input is now specified   for models produced against IR version 4 and later. Whether this document   admits the earlier reading, under which one name in a subgraph could be both,   is unsettled.</td>
<td id="_2cdfec91-8ab3-4aad-d09e-b56f19dd6f96" valign="top" align="left">Minor</td>
</tr><tr id="_d825ca76-4bcd-063f-7ae2-4784d66de2cf"><td id="_494b5279-bfac-e11f-c559-8822a932dfd9" valign="top" align="left"><xref target="broadcasting" style="short"/>, <eref type="inline" bibitemid="onnx-part-2" citeas="ONNX 1-2"/></td>
<td id="_54ff0102-e547-44ed-1433-ad5e3f74cedc" valign="top" align="left">Broadcasting is now specified in <xref target="broadcasting" style="short"/>, but the operator prose of    <eref type="inline" bibitemid="onnx-part-2" citeas="ONNX 1-2"/> still refers to it in plain text rather than by   cross-reference, because a reference from one part of this standard to a   clause of another is not resolved by the toolchain.</td>
<td id="_f609bf18-c174-7d5b-fc5d-15e536fc2cc2" valign="top" align="left">Minor</td>
</tr><tr id="_65d1d284-5676-8051-0e5b-313fb36491a2"><td id="_b58eb6ce-2fff-c6c5-7b3a-d90b82e427c1" valign="top" align="left">Clause 4 (verbal forms)</td>
<td id="_b1333bd3-6e4e-2555-6c69-ee659426eecf" valign="top" align="left">The document uses RFC 2119 capitalised keywords; ISO/IEC Directives Part 2   requires “shall/should/may/can”. An editorial migration, not a technical one.</td>
<td id="_968745d3-ff36-8fb0-b03f-abfe85144b90" valign="top" align="left">Minor</td>
</tr></tbody>
</table>
</clause>

<clause id="_253dceea-097f-33f1-d327-f12bd3ceb0ae" anchor="gaps-closed" obligation="informative">
<title id="_3e5eabc1-ca0c-2088-372a-268308e4b79d">Gaps closed from the upstream documentation</title>
<p id="_0193c3df-1048-aa3a-7615-15e6c6e5d1ed"><xref target="tbl-closed" style="short"/> records the rows removed from the table above, and the upstream document each was closed from. It is kept so that a reviewer can check the transcription rather than take it on trust, and so that a refresh of <tt>upstream/onnx/</tt> can be checked against the clauses that depend on it.</p>

<table id="_34e1b833-28e1-f811-b75e-873f742b824c" anchor="tbl-closed"><colgroup><col width="40%"/><col width="60%"/></colgroup>
<name id="_2f8744f8-54bf-a487-7259-b0eec01052a6">Gaps closed, and the source each was closed from</name>
<thead><tr id="_05bc4d8b-4867-bca0-1312-cb739c19393d"><th id="_73eadd0b-d66d-d15c-ed26-d20276da2b91" valign="top" align="left">Clause</th>
<th id="_57039f98-9c59-bd52-2319-4648214824e4" valign="top" align="left">Source</th>
</tr></thead>
<tbody><tr id="_c6bc359c-047e-2a85-0afc-f2c33f9f5fa1"><td id="_598a7637-ce7c-b315-1c1f-3eec45085503" valign="top" align="left"><xref target="element-types" style="short"/> (complete enumeration)</td>
<td id="_96d6d309-a2f8-1d1c-a414-0e55a348a58d" valign="top" align="left"><tt>onnx-ml.proto</tt>, <tt>TensorProto.DataType</tt></td>
</tr><tr id="_af50661a-362f-5451-6ba9-5a32a7640328"><td id="_e269ad59-309e-09a4-e825-55b2818f3cf4" valign="top" align="left"><xref target="packing" style="short"/> (typed storage)</td>
<td id="_49a21d3a-6d35-2c16-0877-40cfd90cc52a" valign="top" align="left"><tt>onnx-ml.proto</tt>, <tt>TensorProto.int32_data</tt></td>
</tr><tr id="_696c66f1-cf2b-43ff-2781-79a701566050"><td id="_81cc7175-3773-993f-7712-baaeb6e92a8c" valign="top" align="left"><xref target="annex-schema" style="short"/> (the whole annex)</td>
<td id="_2c9a76bd-d6fc-46ad-df9f-ba215d37b643" valign="top" align="left"><tt>upstream/onnx/proto/</tt>, generated by <tt>scripts/generate-schema.rb</tt></td>
</tr><tr id="_fcc43378-dea8-06c4-67f6-3c5bdd25cf74"><td id="_7adf7893-7479-61a4-a21c-1a9f2dc1392c" valign="top" align="left"><xref target="serialization" style="short"/> (the binary encoding)</td>
<td id="_520aa233-5997-1c65-6fab-0e8a8387d622" valign="top" align="left"><tt>upstream/onnx/proto/</tt>, for the types and tags; the encoding itself is   checked against a reference implementation by  <tt>scripts/check-encoding.rb</tt></td>
</tr><tr id="_4397a524-26bc-c867-f257-d5add42da3f6"><td id="_46e19c00-ad44-699d-1aea-9b84daf73e88" valign="top" align="left"><xref target="tbl-ir-versions" style="short"/> (the IR version history)</td>
<td id="_e2d7fec5-d971-c152-f852-486a8d639b93" valign="top" align="left"><tt>docs/Versioning.md</tt>, “Released Versions”; <tt>onnx-ml.proto</tt>, <tt>Version</tt></td>
</tr><tr id="_5f34e6f1-73d2-92f3-d6ff-56a1a9535407"><td id="_2474b78c-e98b-04bf-6144-8b56eedbdac8" valign="top" align="left"><xref target="reduced-precision" style="short"/> (narrow types and their packing)</td>
<td id="_6114071a-7d2f-87fa-5f43-bc2068a90247" valign="top" align="left"><tt>docs/docsgen/source/technical/</tt>: <tt>float4.md</tt>, <tt>float6.md</tt>, <tt>float8.md</tt>,    <tt>int2.md</tt>, <tt>int4.md</tt></td>
</tr><tr id="_e37f3ffc-0094-7c5a-b384-27c9e7d61de5"><td id="_ea7f9951-b732-8306-3ded-2be0be237985" valign="top" align="left"><xref target="broadcasting" style="short"/></td>
<td id="_ade15355-30ee-3a13-e47b-9b7e85ded5c9" valign="top" align="left"><tt>docs/Broadcasting.md</tt></td>
</tr><tr id="_33997859-8702-7361-30fa-3bd9903fdc71"><td id="_783fb212-400a-3f7e-17f2-c6cc4bb485da" valign="top" align="left"><xref target="dimension-variables" style="short"/> (model-wide scope)</td>
<td id="_af47e41b-0a01-f542-cac0-e3b7a43b4bb0" valign="top" align="left"><tt>docs/IR.md</tt>, “Static tensor shapes”</td>
</tr><tr id="_d6e6cae9-7e8f-9ec0-2586-bde9087fc1d3"><td id="_e021fa60-6988-7a96-c32a-06f3d288b76b" valign="top" align="left"><xref target="denotation" style="short"/></td>
<td id="_2f0dd8f4-fc60-f71f-b14c-342bd8c0eba1" valign="top" align="left"><tt>docs/TypeDenotation.md</tt>, <tt>docs/DimensionDenotation.md</tt></td>
</tr><tr id="_067d0794-7ad6-8f6d-bc33-eca495aa7ffc"><td id="_0703ad42-4540-5cba-9381-06fcf761f9d5" valign="top" align="left"><xref target="opaque-types" style="short"/></td>
<td id="_bab11594-9682-7ed3-2953-9f94bbe8908f" valign="top" align="left"><tt>docs/ONNXTypes.md</tt></td>
</tr><tr id="_51c260b4-5d52-97bd-24eb-ae8cc74341c1"><td id="_4b37527d-1a2d-ba11-74cd-81489c99bf3e" valign="top" align="left"><xref target="model-clause" style="short"/>, <xref target="operator-set-import" style="short"/></td>
<td id="_47c9e258-8cf5-01cb-4ea7-442657473758" valign="top" align="left"><tt>docs/IR.md</tt>, “Models”, “Operator Set Identifiers”, “Operator Sets”</td>
</tr><tr id="_fb4fcff4-c9a4-62d0-bb21-14110b582166"><td id="_96a071d9-cd71-81cb-d11b-bf9f02733d4d" valign="top" align="left"><xref target="names-and-scoping" style="short"/>, <xref target="subgraph-visibility" style="short"/></td>
<td id="_6506bcbe-1f41-c973-0e92-b6254f2f838a" valign="top" align="left"><tt>docs/IR.md</tt>, “Names Within a Graph”, “Nodes”</td>
</tr><tr id="_917909b6-430c-e245-405a-39827967344d"><td id="_edb05fde-b582-17a7-ee13-bea299c01dc2" valign="top" align="left"><xref target="metadata" style="short"/></td>
<td id="_9e7e2c5e-0ce6-216d-11f3-f5a034dc38b5" valign="top" align="left"><tt>docs/IR.md</tt>, “Optional Metadata”; <tt>docs/MetadataProps.md</tt></td>
</tr><tr id="_b0c2b318-6853-a7a5-36e4-b8b1170f316e"><td id="_1826ffd3-a4c0-b282-6025-cb3a62f759cd" valign="top" align="left"><xref target="initializers" style="short"/> (IR version 4 and later)</td>
<td id="_37b44c6e-8352-ff57-4476-52d47d5e408d" valign="top" align="left"><tt>docs/IR.md</tt>, “Nodes”</td>
</tr><tr id="_30e5b30b-887c-d81e-45b7-263e1435e465"><td id="_ba1d91f8-caea-5fa6-5575-5008d1529204" valign="top" align="left"><xref target="optional-io" style="short"/> (variadic and unsupplied inputs and outputs)</td>
<td id="_17ce8e9d-218e-a599-3ded-b3656eb049c6" valign="top" align="left"><tt>docs/IR.md</tt>, “Variadic Inputs and Outputs”, “Optional Inputs and Outputs”</td>
</tr><tr id="_a9a3c733-7c3c-641a-aaf4-a32c2d666b4b"><td id="_bf605a1f-dc84-e1f6-8b4a-12158e7cf688" valign="top" align="left"><xref target="functions" style="short"/></td>
<td id="_85726e8f-7956-67d8-d5d6-451426bedf58" valign="top" align="left"><tt>docs/IR.md</tt>, “Functions”</td>
</tr><tr id="_8260f31b-e8dd-a6d6-e2fc-fa7c0b99b01c"><td id="_84dd192a-fea0-83ec-f01f-45d60f8e2fc1" valign="top" align="left"><xref target="graph-semantics" style="short"/> (model as a stateless function)</td>
<td id="_ab25c55e-025d-957c-fad0-9a9d2a6bb4cb" valign="top" align="left"><tt>docs/IR.md</tt>, “Model Semantics”</td>
</tr><tr id="_4a6e7426-0d82-8b82-80b0-a7333c2540ec"><td id="_0aaf5a31-0192-3d3e-9acc-00725bc9cf37" valign="top" align="left"><xref target="external-reference" style="short"/></td>
<td id="_44fdb721-a977-c63a-f599-f2a913caa4f3" valign="top" align="left"><tt>docs/ExternalData.md</tt>, “TensorProto: data_location and external_data fields”</td>
</tr><tr id="_c61cfb87-2cbf-5640-e6f4-2f605b325644"><td id="_50fc6fc4-dccc-23d2-4316-9fba6fad6d51" valign="top" align="left"><xref target="threat-model" style="short"/>, <xref target="path-resolution" style="short"/>, <xref target="resource-bounds" style="short"/></td>
<td id="_701f8b14-8f78-1d56-2086-eecd859dab23" valign="top" align="left"><tt>docs/ExternalDataSecurity.md</tt></td>
</tr><tr id="_7eb2375b-fd3f-8e8f-3684-d328bc9ecd99"><td id="_dc0b9c6a-fa3e-043f-56cb-c6e6bfa0a3d1" valign="top" align="left"><xref target="versioning" style="short"/> (IR version evolution, operator set evolution)</td>
<td id="_5e8900b8-064a-a56c-8c68-43625ef7ed33" valign="top" align="left"><tt>docs/Versioning.md</tt></td>
</tr><tr id="_f52f72f3-f046-12fb-6664-910c826cc726"><td id="_f366b3d1-9501-a045-b0e5-5723dc2986f2" valign="top" align="left"><xref target="inference" style="short"/> (strictness, symbolic dimensions)</td>
<td id="_6ebcb9eb-0806-c24d-0a94-8d766a2126fd" valign="top" align="left"><tt>docs/ShapeInference.md</tt>, “Limitations”</td>
</tr><tr id="_46e83f51-8962-1444-45c3-9e5249bd4294"><td id="_b89001f7-9f71-e6ea-de82-94899deedc5f" valign="top" align="left"><xref target="maintenance" style="short"/> (experimental operators)</td>
<td id="_327b4571-9408-690e-279d-eb3ecf279c09" valign="top" align="left"><tt>docs/ManagingExperimentalOps.md</tt></td>
</tr></tbody>
<note id="_a63f5125-e23c-0934-abda-003649e6c42f"><p id="_c50a8959-46f6-763b-4dc7-5629830ab2cd">The baseline is the vendored copy in <tt>upstream/onnx/</tt>, whose release and commit are recorded in  <tt>upstream/onnx/SOURCE.txt</tt>. Nothing above was taken from the upstream repository outside that copy.</p>
</note></table>


</clause>
</annex><annex id="_695176c5-d9ec-3738-ef25-747396362b1c" obligation="informative">
<title id="_30b82eed-28be-53c0-5ddc-b96592d2e2d9">Correspondence with the ONNX reference implementation</title>
<p id="_edfb0880-f2fd-5e52-3003-30240b2003fb">This document is a restatement of the ONNX format as documented by the ONNX project. It is not derived from the reference implementation’s source, and the implementation is not reproduced here: it is large, it moves with every release, and a copy inside a standard would age badly.</p>

<p id="_afe4082b-ea5b-e0a4-9db3-ff088d43d7ec">The documentation this part was written against is vendored in the repository under  <tt>upstream/onnx/</tt>, at the release recorded in its provenance file, so that every statement in this document can be checked against a fixed tree.</p>

<p id="_4fd1df41-6b83-224b-a4c7-6a3ac08431f9">Where this document and the reference implementation disagree, the divergence is recorded in Annex C rather than resolved silently. Resolving such a divergence is a decision for the ONNX Steering Committee, not for the editor.</p>
</annex><bibliography><references id="_c2cf1464-f938-951b-9ef6-61e4c0375f44" normative="true" obligation="informative">
<title id="_270c5ee6-077e-f285-ff95-287984a30140">Normative references</title><p id="_49996d2b-65c1-916b-9bbf-42b933aa0025">The following documents are referred to in the text in such a way that some or all of their content constitutes requirements of this document. For dated references, only the edition cited applies. For undated references, the latest edition of the referenced document (including any amendments) applies.</p>


<bibitem anchor="onnx-part-2" id="_60d85e07-8bb2-81c5-30a0-c59b158e2e37"><formattedref format="application/x-isodoc+xml"><em>Open Neural Network Exchange (ONNX) —- Part 2:
Operator sets</em></formattedref><docidentifier>ONNX 1-2</docidentifier><docnumber>1-2</docnumber><language>en</language><script>Latn</script></bibitem>
<bibitem anchor="onnx-part-3" id="_ddece3c8-f516-76bd-57db-cf7b9f890dad"><formattedref format="application/x-isodoc+xml"><em>Open Neural Network Exchange (ONNX) —- Part 3:
Conformance test package</em></formattedref><docidentifier>ONNX 1-3</docidentifier><docnumber>1-3</docnumber><language>en</language><script>Latn</script></bibitem>
<bibitem anchor="ieee754" id="_bdc19ab0-25bb-a5b7-3b45-7436348856f1"><formattedref format="application/x-isodoc+xml"><em>IEEE Standard for Floating-Point Arithmetic</em></formattedref><docidentifier type="IEEE">IEEE 754-2019</docidentifier><docnumber>754</docnumber><date type="published"><on>2019</on></date><language>en</language><script>Latn</script></bibitem>
<bibitem id="_d25e73bc-1c28-9b1e-aba4-4e73afe1067f" type="standard" schema-version="v1.5.6" anchor="iso9899">
  <fetched>2026-09-21</fetched>
  
<title language="en" script="Latn" type="title-intro">Information technology</title>

  
<title language="en" script="Latn" type="title-main">Programming languages</title>

  
<title language="en" script="Latn" type="title-part">C</title>

  
<title language="en" script="Latn" type="main">Information technology — Programming languages — C</title>

  
<title language="fr" script="Latn" type="title-intro">Technologies de l’information</title>

  
<title language="fr" script="Latn" type="title-main">Langages de programmation</title>

  
<title language="fr" script="Latn" type="title-part">C</title>

  
<title language="fr" script="Latn" type="main">Technologies de l’information — Langages de programmation — C</title>

  <uri type="src">https://www.iso.org/standard/82075.html</uri>
  <uri type="obp">https://www.iso.org/obp/ui/en/#!iso:std:82075:en</uri>
  <uri type="rss">https://www.iso.org/contents/data/standard/08/20/82075.detail.rss</uri>
  <docidentifier type="ISO" primary="true">ISO/IEC 9899</docidentifier>
  <docidentifier type="iso-undated">ISO/IEC 9899</docidentifier>
  <docidentifier type="iso-reference">ISO/IEC 9899(E)</docidentifier>
  <docidentifier type="URN">urn:iso:std:iso-iec:9899</docidentifier>
  <docnumber>9899</docnumber>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name>International Organization for Standardization</name>

      <abbreviation>ISO</abbreviation>
      <uri>www.iso.org</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name>International Electrotechnical Commission</name>

      <abbreviation>IEC</abbreviation>
      <uri>www.iec.ch</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="author">
      <description>committee</description>
    </role>
    <organization>
      
<name>International Organization for Standardization</name>

      <subdivision type="technical-committee" subtype="IEC">
        
<name>Programming languages, their environments and system software interfaces</name>

        <identifier>ISO/IEC JTC 1/SC 22</identifier>
      </subdivision>
      <abbreviation>ISO</abbreviation>
    </organization>
  </contributor>
  <edition>5</edition>
  <language>en</language>
  <script>Latn</script>
  <status>
    <stage>60</stage>
    <substage>60</substage>
  </status>
  <copyright>
    <from>2024</from>
    <owner>
      <organization>
        
<name>ISO/IEC</name>

      </organization>
    </owner>
  </copyright>
  <relation type="obsoletes">
    <bibitem>
      <formattedref>ISO/IEC 9899:2018</formattedref>
      <docidentifier type="ISO" primary="true">ISO/IEC 9899:2018</docidentifier>
      <date type="published">
        <on>2018-07-05</on>
      </date>
    </bibitem>

  </relation>
  <relation type="instanceOf">
    <bibitem type="standard">
      
<title language="en" script="Latn" type="title-intro">Information technology</title>

      
<title language="en" script="Latn" type="title-main">Programming languages</title>

      
<title language="en" script="Latn" type="title-part">C</title>

      
<title language="en" script="Latn" type="main">Information technology — Programming languages — C</title>

      
<title language="fr" script="Latn" type="title-intro">Technologies de l’information</title>

      
<title language="fr" script="Latn" type="title-main">Langages de programmation</title>

      
<title language="fr" script="Latn" type="title-part">C</title>

      
<title language="fr" script="Latn" type="main">Technologies de l’information — Langages de programmation — C</title>

      <uri type="src">https://www.iso.org/standard/82075.html</uri>
      <uri type="obp">https://www.iso.org/obp/ui/en/#!iso:std:82075:en</uri>
      <uri type="rss">https://www.iso.org/contents/data/standard/08/20/82075.detail.rss</uri>
      <docidentifier type="ISO" primary="true">ISO/IEC 9899:2024</docidentifier>
      <docidentifier type="iso-undated">ISO/IEC 9899</docidentifier>
      <docidentifier type="iso-reference">ISO/IEC 9899:2024(E)</docidentifier>
      <docidentifier type="URN">urn:iso:std:iso-iec:9899</docidentifier>
      <docnumber>9899</docnumber>
      <date type="published">
        <on>2024-10-31</on>
      </date>
      <contributor>
        <role type="publisher"/>
        <organization>
          
<name>International Organization for Standardization</name>

          <abbreviation>ISO</abbreviation>
          <uri>www.iso.org</uri>
        </organization>
      </contributor>
      <contributor>
        <role type="publisher"/>
        <organization>
          
<name>International Electrotechnical Commission</name>

          <abbreviation>IEC</abbreviation>
          <uri>www.iec.ch</uri>
        </organization>
      </contributor>
      <contributor>
        <role type="author">
          <description>committee</description>
        </role>
        <organization>
          
<name>International Organization for Standardization</name>

          <subdivision type="technical-committee" subtype="IEC">
            
<name>Programming languages, their environments and system software interfaces</name>

            <identifier>ISO/IEC JTC 1/SC 22</identifier>
          </subdivision>
          <abbreviation>ISO</abbreviation>
        </organization>
      </contributor>
      <edition>5</edition>
      <language>en</language>
      <script>Latn</script>
      <abstract language="en" script="Latn">This document specifies the form and establishes the interpretation of programs written in the C programming language. It is designed to promote the portability of C programs among a variety of data-processing systems. It is intended for use by implementers and programmers. It specifies: — the representation of C programs; — the syntax and constraints of the C language; — the semantic rules for interpreting C programs; — the representation of input data to be processed by C programs; — the representation of output data produced by C programs; — the restrictions and limits imposed by a conforming implementation of C. This document does not specify: — the mechanism by which C programs are transformed for use by a data-processing system; — the mechanism by which C programs are invoked for use by a data-processing system; — the mechanism by which input data are transformed for use by a C program; — the mechanism by which output data are transformed after being produced by a C program; — the size or complexity of a program and its data that will exceed the capacity of any specific data-processing system or the capacity of a particular processor; — all minimal requirements of a data-processing system that is capable of supporting a conforming implementation. Annex J gives an overview of portability issues that a C program can encounter.</abstract>
      <status>
        <stage>60</stage>
        <substage>60</substage>
      </status>
      <copyright>
        <from>2024</from>
        <owner>
          <organization>
            
<name>ISO/IEC</name>

          </organization>
        </owner>
      </copyright>
      <relation type="obsoletes">
        <bibitem>
          <formattedref>ISO/IEC 9899:2018</formattedref>
          <docidentifier type="ISO" primary="true">ISO/IEC 9899:2018</docidentifier>
          <date type="published">
            <on>2018-07-05</on>
          </date>
        </bibitem>

      </relation>
      <place>
        <city>Geneva</city>
      </place>
    </bibitem>

  </relation>
  <place>
    <city>Geneva</city>
  </place>
</bibitem>
<bibitem id="_a77111f8-4d20-c84b-fad6-a2c1255daf14" type="standard" schema-version="v1.5.6" anchor="iso10646">
  <fetched>2026-09-21</fetched>
  
<title language="en" script="Latn" type="title-intro">Information technology</title>

  
<title language="en" script="Latn" type="title-main">Universal coded character set (UCS)</title>

  
<title language="en" script="Latn" type="main">Information technology — Universal coded character set (UCS)</title>

  
<title language="fr" script="Latn" type="title-intro">Technologies de l’information</title>

  
<title language="fr" script="Latn" type="title-main">Jeu universel de caractères codés (JUC)</title>

  
<title language="fr" script="Latn" type="main">Technologies de l’information — Jeu universel de caractères codés (JUC)</title>

  <uri type="src">https://www.iso.org/standard/76835.html</uri>
  <uri type="obp">https://www.iso.org/obp/ui/en/#!iso:std:76835:en</uri>
  <uri type="rss">https://www.iso.org/contents/data/standard/07/68/76835.detail.rss</uri>
  <docidentifier type="ISO" primary="true">ISO/IEC 10646</docidentifier>
  <docidentifier type="iso-undated">ISO/IEC 10646</docidentifier>
  <docidentifier type="iso-reference">ISO/IEC 10646(E)</docidentifier>
  <docidentifier type="URN">urn:iso:std:iso-iec:10646:stage-90.92</docidentifier>
  <docnumber>10646</docnumber>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name>International Organization for Standardization</name>

      <abbreviation>ISO</abbreviation>
      <uri>www.iso.org</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name>International Electrotechnical Commission</name>

      <abbreviation>IEC</abbreviation>
      <uri>www.iec.ch</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="author">
      <description>committee</description>
    </role>
    <organization>
      
<name>International Organization for Standardization</name>

      <subdivision type="technical-committee" subtype="IEC">
        
<name>Coded character sets</name>

        <identifier>ISO/IEC JTC 1/SC 2</identifier>
      </subdivision>
      <abbreviation>ISO</abbreviation>
    </organization>
  </contributor>
  <edition>6</edition>
  <language>en</language>
  <script>Latn</script>
  <status>
    <stage>90</stage>
    <substage>92</substage>
  </status>
  <copyright>
    <from>2020</from>
    <owner>
      <organization>
        
<name>ISO/IEC</name>

      </organization>
    </owner>
  </copyright>
  <relation type="obsoletes">
    <bibitem>
      <formattedref>ISO/IEC 10646:2017</formattedref>
      <docidentifier type="ISO" primary="true">ISO/IEC 10646:2017</docidentifier>
      <date type="published">
        <on>2017-12-20</on>
      </date>
    </bibitem>

  </relation>
  <relation type="obsoletes">
    <bibitem>
      <formattedref>ISO/IEC 10646:2017/Amd 2:2019</formattedref>
      <docidentifier type="ISO" primary="true">ISO/IEC 10646:2017/Amd 2:2019</docidentifier>
      <date type="published">
        <on>2019-06-14</on>
      </date>
    </bibitem>

  </relation>
  <relation type="obsoletes">
    <bibitem>
      <formattedref>ISO/IEC 10646:2017/Amd 1:2019</formattedref>
      <docidentifier type="ISO" primary="true">ISO/IEC 10646:2017/Amd 1:2019</docidentifier>
      <date type="published">
        <on>2019-01-31</on>
      </date>
    </bibitem>

  </relation>
  <relation type="obsoletedBy">
    <bibitem>
      <formattedref>ISO/IEC DIS 10646</formattedref>
      <docidentifier type="ISO" primary="true">ISO/IEC DIS 10646</docidentifier>
    </bibitem>

  </relation>
  <relation type="updatedBy">
    <bibitem>
      <formattedref>ISO/IEC 10646:2020/Amd 1:2023</formattedref>
      <docidentifier type="ISO" primary="true">ISO/IEC 10646:2020/Amd 1:2023</docidentifier>
      <date type="published">
        <on>2023-07-17</on>
      </date>
    </bibitem>

  </relation>
  <relation type="updatedBy">
    <bibitem>
      <formattedref>ISO/IEC 10646:2020/Amd 2:2025</formattedref>
      <docidentifier type="ISO" primary="true">ISO/IEC 10646:2020/Amd 2:2025</docidentifier>
      <date type="published">
        <on>2025-06-02</on>
      </date>
    </bibitem>

  </relation>
  <relation type="instanceOf">
    <bibitem type="standard">
      
<title language="en" script="Latn" type="title-intro">Information technology</title>

      
<title language="en" script="Latn" type="title-main">Universal coded character set (UCS)</title>

      
<title language="en" script="Latn" type="main">Information technology — Universal coded character set (UCS)</title>

      
<title language="fr" script="Latn" type="title-intro">Technologies de l’information</title>

      
<title language="fr" script="Latn" type="title-main">Jeu universel de caractères codés (JUC)</title>

      
<title language="fr" script="Latn" type="main">Technologies de l’information — Jeu universel de caractères codés (JUC)</title>

      <uri type="src">https://www.iso.org/standard/76835.html</uri>
      <uri type="obp">https://www.iso.org/obp/ui/en/#!iso:std:76835:en</uri>
      <uri type="rss">https://www.iso.org/contents/data/standard/07/68/76835.detail.rss</uri>
      <docidentifier type="ISO" primary="true">ISO/IEC 10646:2020</docidentifier>
      <docidentifier type="iso-undated">ISO/IEC 10646</docidentifier>
      <docidentifier type="iso-reference">ISO/IEC 10646:2020(E)</docidentifier>
      <docidentifier type="URN">urn:iso:std:iso-iec:10646:stage-90.92</docidentifier>
      <docnumber>10646</docnumber>
      <date type="published">
        <on>2020-12-21</on>
      </date>
      <contributor>
        <role type="publisher"/>
        <organization>
          
<name>International Organization for Standardization</name>

          <abbreviation>ISO</abbreviation>
          <uri>www.iso.org</uri>
        </organization>
      </contributor>
      <contributor>
        <role type="publisher"/>
        <organization>
          
<name>International Electrotechnical Commission</name>

          <abbreviation>IEC</abbreviation>
          <uri>www.iec.ch</uri>
        </organization>
      </contributor>
      <contributor>
        <role type="author">
          <description>committee</description>
        </role>
        <organization>
          
<name>International Organization for Standardization</name>

          <subdivision type="technical-committee" subtype="IEC">
            
<name>Coded character sets</name>

            <identifier>ISO/IEC JTC 1/SC 2</identifier>
          </subdivision>
          <abbreviation>ISO</abbreviation>
        </organization>
      </contributor>
      <edition>6</edition>
      <language>en</language>
      <script>Latn</script>
      <abstract language="en" script="Latn">This document specifies the architecture of the UCS; defines terms used for the UCS; describes the general structure of the UCS codespace; specifies the assigned planes of the UCS: the Basic Multilingual Plane (BMP) of the UCS, the Supplementary Multilingual Plane (SMP), the Supplementary Ideographic Plane (SIP), the Tertiary Ideographic Plane (TIP), and the Supplementary Special-purpose Plane (SSP); defines a set of graphic characters used in scripts and the written form of languages on a world-wide scale; specifies the names for the graphic characters and format characters of the BMP, SMP, SIP, TIP, SSP and their coded representations within the UCS codespace; specifies the coded representations for control characters and private use characters; specifies three encoding forms of the UCS: UTF-8, UTF-16, and UTF-32; specifies seven encoding schemes of the UCS: UTF-8, UTF-16, UTF-16BE, UTF-16LE, UTF-32, UTF-32BE, and UTF-32LE; specifies the management of future additions to this coded character set. NOTE The determination of suitability of these characters for use as identifiers in programming languages is not specified by this document but can be found in an external reference. See Annex U.</abstract>
      <status>
        <stage>90</stage>
        <substage>92</substage>
      </status>
      <copyright>
        <from>2020</from>
        <owner>
          <organization>
            
<name>ISO/IEC</name>

          </organization>
        </owner>
      </copyright>
      <relation type="obsoletes">
        <bibitem>
          <formattedref>ISO/IEC 10646:2017</formattedref>
          <docidentifier type="ISO" primary="true">ISO/IEC 10646:2017</docidentifier>
          <date type="published">
            <on>2017-12-20</on>
          </date>
        </bibitem>

      </relation>
      <relation type="obsoletes">
        <bibitem>
          <formattedref>ISO/IEC 10646:2017/Amd 2:2019</formattedref>
          <docidentifier type="ISO" primary="true">ISO/IEC 10646:2017/Amd 2:2019</docidentifier>
          <date type="published">
            <on>2019-06-14</on>
          </date>
        </bibitem>

      </relation>
      <relation type="obsoletes">
        <bibitem>
          <formattedref>ISO/IEC 10646:2017/Amd 1:2019</formattedref>
          <docidentifier type="ISO" primary="true">ISO/IEC 10646:2017/Amd 1:2019</docidentifier>
          <date type="published">
            <on>2019-01-31</on>
          </date>
        </bibitem>

      </relation>
      <relation type="obsoletedBy">
        <bibitem>
          <formattedref>ISO/IEC DIS 10646</formattedref>
          <docidentifier type="ISO" primary="true">ISO/IEC DIS 10646</docidentifier>
        </bibitem>

      </relation>
      <relation type="updatedBy">
        <bibitem>
          <formattedref>ISO/IEC 10646:2020/Amd 1:2023</formattedref>
          <docidentifier type="ISO" primary="true">ISO/IEC 10646:2020/Amd 1:2023</docidentifier>
          <date type="published">
            <on>2023-07-17</on>
          </date>
        </bibitem>

      </relation>
      <relation type="updatedBy">
        <bibitem>
          <formattedref>ISO/IEC 10646:2020/Amd 2:2025</formattedref>
          <docidentifier type="ISO" primary="true">ISO/IEC 10646:2020/Amd 2:2025</docidentifier>
          <date type="published">
            <on>2025-06-02</on>
          </date>
        </bibitem>

      </relation>
      <place>
        <city>Geneva</city>
      </place>
    </bibitem>

  </relation>
  <place>
    <city>Geneva</city>
  </place>
</bibitem>
<bibitem id="_0efe7e30-26c7-084f-5f8f-a4a54fc04eaa" type="standard" schema-version="v1.5.6" anchor="rfc8259">
  <fetched>2026-09-21</fetched>
  
<title type="main">The JavaScript Object Notation (JSON) Data Interchange Format</title>

  <uri type="src">https://www.rfc-editor.org/info/rfc8259</uri>
  <docidentifier type="IETF" primary="true">RFC 8259</docidentifier>
  <docidentifier type="DOI">10.17487/RFC8259</docidentifier>
  <docnumber>RFC8259</docnumber>
  <date type="published">
    <on>2017-12</on>
  </date>
  <contributor>
    <role type="editor"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">T.</formatted-initials>          <surname language="en" script="Latn">Bray</surname>          <completename language="en" script="Latn">T. Bray</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name language="en">RFC Publisher</name>

    </organization>
  </contributor>
  <contributor>
    <role type="authorizer"/>
    <organization>
      
<name language="en">RFC Series</name>

    </organization>
  </contributor>
  <contributor>
    <role type="author">
      <description>committee</description>
    </role>
    <organization>
      
<name language="en">Internet Engineering Task Force</name>

      <subdivision type="workgroup">
        
<name>Javascript Object Notation Update</name>

        <identifier>jsonbis</identifier>
      </subdivision>
      <abbreviation language="en">IETF</abbreviation>
    </organization>
  </contributor>
  <language>en</language>
  <script>Latn</script>
  <abstract language="en" script="Latn">
    <p id="_ff0df860-633e-bbb7-3d53-05f3bf39e7ec">JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</p>

    <p id="_5216c836-91b8-2b82-f0a4-335fc97c66c4">This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</p>

  </abstract>
  <status>
    <stage>INTERNET STANDARD</stage>
  </status>
  <series>
    
<title>STD</title>

    <number>90</number>
  </series>
  <series>
    
<title>RFC</title>

    <number>8259</number>
  </series>
  <series type="stream">
    
<title>IETF</title>

  </series>
</bibitem>
<bibitem id="_ba9bfcfe-a22f-1333-bacf-21b24234c385" type="standard" schema-version="v1.5.6" anchor="rfc2119">
  <fetched>2026-09-21</fetched>
  
<title type="main">Key words for use in RFCs to Indicate Requirement Levels</title>

  <uri type="src">https://www.rfc-editor.org/info/rfc2119</uri>
  <docidentifier type="IETF" primary="true">RFC 2119</docidentifier>
  <docidentifier type="DOI">10.17487/RFC2119</docidentifier>
  <docnumber>RFC2119</docnumber>
  <date type="published">
    <on>1997-03</on>
  </date>
  <contributor>
    <role type="author"/>
    <person>
      
<name>                    <formatted-initials language="en" script="Latn">S.</formatted-initials>          <surname language="en" script="Latn">Bradner</surname>          <completename language="en" script="Latn">S. Bradner</completename>       </name>

    </person>
  </contributor>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name language="en">RFC Publisher</name>

    </organization>
  </contributor>
  <contributor>
    <role type="authorizer"/>
    <organization>
      
<name language="en">RFC Series</name>

    </organization>
  </contributor>
  <language>en</language>
  <script>Latn</script>
  <abstract language="en" script="Latn">
    <p id="_f8fa603f-258d-0817-2725-7de455f63d30">In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized.  This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</p>

  </abstract>
  <status>
    <stage>BEST CURRENT PRACTICE</stage>
  </status>
  <series>
    
<title>BCP</title>

    <number>14</number>
  </series>
  <series>
    
<title>RFC</title>

    <number>2119</number>
  </series>
  <series type="stream">
    
<title>IETF</title>

  </series>
  <keyword>
    <vocab>Standards</vocab>
  </keyword>
  <keyword>
    <vocab>Track</vocab>
  </keyword>
  <keyword>
    <vocab>Documents</vocab>
  </keyword>
</bibitem>

<note id="_fb70d331-83b7-468a-5ff9-c1569913dcdc"><p id="_48e4d5b0-392b-9036-71d7-f823c57b3a67">Protocol Buffers is deliberately not a normative reference. It has no citable specification with a stable identifier, and this document therefore states the binary encoding itself, in  <xref target="serialization" style="short"/>, rather than citing one. An implementation may still be built on a Protocol Buffers library; see <xref target="protobuf-relationship" style="short"/>.</p>
</note>
</references><references id="_0645a6ea-7faf-43ab-625e-574412d1f047" normative="false" obligation="informative">
<title id="_50ceb1e1-516f-2673-d73d-4f0c58b4d023">Bibliography</title><bibitem anchor="isodir2" id="_3441f167-fe00-7cd9-71d8-68ed94b5be84" type="standard">
<docidentifier type="ISO">ISO/IEC DIR 2</docidentifier><docnumber>2</docnumber><contributor><role type="publisher"/><organization>
<name>ISO</name>
</organization></contributor><contributor><role type="publisher"/><organization>
<name>IEC</name>
</organization></contributor><language>en</language><script>Latn</script></bibitem><bibitem anchor="isopas" id="_f0330691-3009-d724-6468-de85aab16e96">
  <formattedref format="application/x-isodoc+xml">
    <em>Publicly Available Specification (PAS)
transposition process</em>
  </formattedref>
  <docidentifier type="ISO">ISO/IEC JTC 1 PAS</docidentifier>
  <docnumber>1 PAS</docnumber>
  <language>en</language>
  <script>Latn</script>
</bibitem><bibitem anchor="protobuf" id="_d1004718-6276-16d8-3231-d85186df80d3">
  <formattedref format="application/x-isodoc+xml"><em>Protocol Buffers</em>,
<link target="https://protobuf.dev"/></formattedref>
  <docidentifier>Protocol Buffers</docidentifier>
  <language>en</language>
  <script>Latn</script>
</bibitem><bibitem anchor="onnxrepo" id="_7e7dd734-253f-9e6b-ee3f-71df15af1144">
  <formattedref format="application/x-isodoc+xml"><em>Open Neural Network Exchange</em>, <link target="https://onnx.ai"/></formattedref>
  <docidentifier>ONNX</docidentifier>
  <language>en</language>
  <script>Latn</script>
</bibitem><bibitem anchor="jdf" id="_42566531-be19-8b7c-b77a-630a0890440b">
  <formattedref format="application/x-isodoc+xml"><em>Joint Development Foundation</em>,
<link target="https://www.jointdevelopment.org"/></formattedref>
  <docidentifier>JDF</docidentifier>
  <language>en</language>
  <script>Latn</script>
</bibitem>





</references></bibliography>
</metanorma>
