Skip to content

Commit 17f944c

Browse files
authored
ONNX API documentation. (dotnet#419)
* ONNX API documentation.
1 parent 31ae678 commit 17f944c

File tree

1 file changed

+47
-2
lines changed

1 file changed

+47
-2
lines changed

src/Microsoft.ML/Models/OnnxConverter.cs

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,54 @@ namespace Microsoft.ML.Models
1010
public sealed partial class OnnxConverter
1111
{
1212
/// <summary>
13-
/// Converts the model to ONNX format.
13+
/// <see href="https://onnx.ai/">ONNX</see> is an intermediate representation format
14+
/// for machine learning models. It is used to make models portable such that you can
15+
/// train a model using a toolkit and run it in another tookit's runtime, for example,
16+
/// you can create a model using ML.NET (or any ONNX compatible toolkit), convert it to ONNX and
17+
/// then the ONNX model can be converted into say, CoreML, TensorFlow or WinML model
18+
/// to run on the respective runtime.
19+
///
20+
/// This API converts an ML.NET model to ONNX format by inspecting the transform pipeline
21+
/// from the end, checking for components that know how to save themselves as ONNX.
22+
/// The first item in the transform pipeline that does not know how to save itself
23+
/// as ONNX, is considered the "input" to the ONNX pipeline. (Ideally this would be the
24+
/// original loader itself, but this may not be possible if the user used unsavable
25+
/// transforms in defining the pipe.) All the columns in the source that are a type the
26+
/// ONNX knows how to deal with will be tracked. Intermediate transformations of the
27+
/// data appearing as new columns will appear in the output block of the ONNX, with names
28+
/// derived from the corresponding column names. The ONNX JSON will be serialized to a
29+
/// path defined through the Json option.
30+
///
31+
/// This API supports the following arguments:
32+
/// <see cref="Onnx"/> indicates the file to write the ONNX protocol buffer file to. This is optional.
33+
/// <see cref="Json"/> indicates the file to write the JSON representation of the ONNX model. This is optional.
34+
/// <see cref="Name"/> indicates the name property in the ONNX model. If left unspecified, it will
35+
/// be the extension-less name of the file specified in the onnx indicates the protocol buffer file
36+
/// to write the ONNX representation to.
37+
/// <see cref="Domain"/> indicates the domain name of the model. ONNX uses reverse domain name space indicators.
38+
/// For example com.microsoft.cognitiveservices. This is a required field.
39+
/// <see cref="InputsToDrop"/> is a string array of input column names to omit from the input mapping.
40+
/// A common scenario might be to drop the label column, for instance, since it may not be practically
41+
/// useful for the pipeline. Note that any columns depending on these naturally cannot be saved.
42+
/// <see cref="OutputsToDrop"/> is similar, except for the output schema. Note that the pipeline handler
43+
/// is currently not intelligent enough to drop intermediate calculations that produce this value: this will
44+
/// merely omit that value from the actual output.
45+
///
46+
/// Transforms that can be exported to ONNX
47+
/// 1. Concat
48+
/// 2. KeyToVector
49+
/// 3. NAReplace
50+
/// 4. Normalize
51+
/// 5. Term
52+
/// 6. Categorical
53+
///
54+
/// Learners that can be exported to ONNX
55+
/// 1. FastTree
56+
/// 2. LightGBM
57+
/// 3. Logistic Regression
58+
///
1459
/// See <a href="https://github.com/dotnet/machinelearning/blob/master/test/Microsoft.ML.Tests/OnnxTests.cs"/>
15-
/// for an example.
60+
/// for an example on how to train a model and then convert that model to ONNX.
1661
/// </summary>
1762
/// <param name="model">Model that needs to be converted to ONNX format.</param>
1863
public void Convert(PredictionModel model)

0 commit comments

Comments
 (0)