Skip to main content

Infer.NET user guide : Running inference

Quality Bands

Quality bands are a way for you to assess the reliability of the code generated by the Infer.NET engine. These bands are assigned to all distributions and to all message operators which act on these distributions. The Infer.NET model compiler generates an error message for each expression in the generated code which falls below a user-settable required quality band, and generates a warning for each expression which falls below a user-settable recommended quality band.

If you are embedding your generated code into production code, for example, you may want to set the required quality level high, whereas if you are doing research you would set it lower, perhaps allowing access to experimental features.

Quality Band Definitions

Quality Band Description
Mature Mature components are ready for full release, meeting the highest levels of quality and stability. Future releases of mature components will maintain a high quality band with no breaking changes other than in exceptional circumstances. Users should be confident using mature components, knowing that when they upgrade from one version of Infer.NET to a newer version it will be a quick and easy process. These components will have detailed documentation and at least one example of usage.
Stable Stable components are suitable for a wide range of usage scenarios and will have incorporated substantial design and functionality feedback. They may continue evolving via limited bug fixes, fine-tuning, and support for additional scenarios. Stable components may have a small number of breaking API or behaviour changes when feedback demands it. These components will have a reasonable level of documentation which may include examples.
Preview Preview components are intended to meet most basic usage scenarios. While in the Preview Quality Band, these components may have a moderate number of breaking API or behaviour changes in response to user feedback and as we learn more about how they will be used. Users are likely to encounter bugs and functionality issues for less common scenarios. These will have some documentation which may be minimal.
Experimental Experimental components are work in progress and represent early stage development of new components. They are typically usable in just a few common scenarios, and will not have undergone rigorous testing. They are primarily intended for use by researchers and provide an opportunity for preliminary feedback. It is possible that a given experimental component may not be included in a future release. These may be undocumented or only sparsely documented.
Unknown These components have not been marked with a quality band.

The required and recommended quality bands can be set on the Compiler property for the inference engine. For example:

InferenceEngine engine = new InferenceEngine();  
engine.Compiler.RequiredQuality = QualityBand.Experimental;  
engine.Compiler.RecommendedQuality = QualityBand.Stable;

If you want to disable the model compiler errors and/or the warnings, set the required and recommended Quality bands to the lowest level:

engine.Compiler.RequiredQuality = QualityBand.Unknown;  
engine.Compiler.RecommendedQuality = QualityBand.Unknown;

Default Quality Bands

By default the required quality band is set to QualityBand.Experimental and the recommended quality band is set to QualityBand.Preview.