onnxruntime/winml/api/Microsoft.AI.MachineLearning.Experimental.idl
Sheil Kumar 87cb6fd495
Add LearningModelBuilder to WinML Experimental Namespace along with various Audio operators (#6623)
* model building

* fix build

* winml adapter model building api

* model building

* make build

* make build again

* add model building with audio op

* inplace and inorder fft

* add ifft

* works!

* cleanup

* add comments

* switch to iterative rather than recursive and use parallelization

* batched parallelization

* fft->dft

* cleanup

* window functions

* add melweightmatrix op

* updates to make spectrogram test work

* push latest

* add onesided

* cleanup

* Clean up building apis and fix mel

* cleanup

* cleanup

* naive stft

* fix test output

* middle c complete

* 3 tones

* cleanup

* signal def new line

* Add save functionality

* Perf improvements, 10x improvement

* cleanup

* use bitreverse lookup table for performance

* implement constant initializers for tensors

* small changes

* add matmul tests

* merge issues

* support add attribute

* add tests for double data type windowfunctions and minor cleanup

* stft onesided/and not tests

* cleanup

* cleanup

* clean up

* cleanup

* remove threading attribute

* forward declare orttypeinfo

* warnings

* fwd declare

* fix warnings

* 1 more warning

* remove saving to e drive...

* cleanup and fix stft test

* add opset picker

* small additions

* add onnxruntime tests

* add signed/unsigned

* fix warning

* fix warning

* finish onnxruntime tests

* make windows namespace build succeed

* add experimental flag

* add experimental api into nuget package

* add experimental api build flag and add to windows ai nuget package

* turn experimental for tests

* add minimum opset version to new experimental domain

* api cleanup

* disable ms experimental ops test when --ms_experimental is not enabled

* add macro behind flag

* remove unused x

* pr feedback

Co-authored-by: Sheil Kumar <sheilk@microsoft.com>
2021-02-12 14:17:10 -08:00

104 lines
3.8 KiB
Text

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
import "Windows.Foundation.idl";
import "dualapipartitionattribute.idl";
import "Windows.AI.MachineLearning.idl";
#include <sdkddkver.h>
#ifdef BUILD_INBOX
#define ROOT_NS Windows
#define INBOX_ONLY(x) x
#define OTB_ONLY(x)
#else
#define INBOX_ONLY(x)
#define OTB_ONLY(x) x
#endif
#ifndef ROOT_NS
#define ROOT_NS Microsoft
#endif
namespace ROOT_NS.AI.MachineLearning.Experimental {
runtimeclass LearningModelBuilder;
[marshaling_behavior(agile)]
[dualapipartition(1)]
runtimeclass LearningModelSessionOptionsExperimental {
Windows.Foundation.Collections.IMapView<String, UINT32> GetNamedDimensionOverrides();
}
[threading(both)]
[marshaling_behavior(agile)]
[dualapipartition(1)]
runtimeclass LearningModelSessionExperimental {
LearningModelSessionExperimental(ROOT_NS.AI.MachineLearning.LearningModelSession session);
LearningModelSessionOptionsExperimental Options { get; };
}
[threading(both)]
[marshaling_behavior(agile)]
[dualapipartition(1)]
runtimeclass LearningModelOperator {
LearningModelOperator(String type);
LearningModelOperator(String type, String domain);
LearningModelOperator SetName(String name);
LearningModelOperator SetInput(String operator_input_name, String input_name);
LearningModelOperator SetConstant(String operator_input_name, IInspectable default_value);
LearningModelOperator SetOutput(String operator_output_name, String output_name);
LearningModelOperator SetAttribute(String name, IInspectable value);
String Name { get; };
String Type { get; };
String Domain { get; };
}
[marshaling_behavior(agile)]
[dualapipartition(1)]
runtimeclass LearningModelOperatorSet {
LearningModelBuilder Add(LearningModelOperator op);
}
[marshaling_behavior(agile)]
[dualapipartition(1)]
runtimeclass LearningModelInputs {
LearningModelBuilder Add(ROOT_NS.AI.MachineLearning.ILearningModelFeatureDescriptor input);
LearningModelBuilder Add(String input_name, String input_description, IInspectable default_value);
LearningModelBuilder AddConstant(String input_name, IInspectable value);
}
[marshaling_behavior(agile)]
[dualapipartition(1)]
runtimeclass LearningModelOutputs {
LearningModelBuilder Add(ROOT_NS.AI.MachineLearning.ILearningModelFeatureDescriptor output);
}
//! \interface LearningModelBuilder
//! \brief Represents a trained machine learning model.
//! \details This is the main object you use to interact with Windows Machine Learning. You use
//! it to load, bind, and evaluate trained ONNX models. To load the model you use
//! one of the Load constructors. You can then enumerate the InputFeatures and
//! OutputFeatures. To bind and evaluate you create a LearningModelSession.
[threading(both)]
[marshaling_behavior(agile)]
[dualapipartition(1)]
runtimeclass LearningModelBuilder {
LearningModelInputs Inputs { get; };
LearningModelOutputs Outputs { get; };
LearningModelOperatorSet Operators { get; };
//! Create a builder.
static LearningModelBuilder Create(Int32 opset);
//! Creates a TensorFeatureDescriptor.. this should be a constructor on the TFD
//TensorFeatureDescriptor(String name, String description, TensorKind kind, Int64[] shape);
static ROOT_NS.AI.MachineLearning.TensorFeatureDescriptor CreateTensorFeatureDescriptor(String name, String description, ROOT_NS.AI.MachineLearning.TensorKind kind, Int64[] shape);
static ROOT_NS.AI.MachineLearning.TensorFeatureDescriptor CreateTensorFeatureDescriptor(String name, ROOT_NS.AI.MachineLearning.TensorKind kind, Int64[] shape);
ROOT_NS.AI.MachineLearning.LearningModel CreateModel();
void Save(String file_name);
}
} // namespace Microsoft.AI.MachineLearning.Experimental