Search Results for

    Show / Hide Table of Contents

    Class SharedVariable<DomainType>

    Abstract base class for shared variables. Shared variables allow a model to be split into submodels in which variables are shared. Each submodel can have many copies.

    Inheritance
    Object
    SharedVariable<DomainType>
    Implements
    ISharedVariable
    Inherited Members
    Object.Equals(Object)
    Object.Equals(Object, Object)
    Object.GetHashCode()
    Object.GetType()
    Object.MemberwiseClone()
    Object.ReferenceEquals(Object, Object)
    Namespace: Microsoft.ML.Probabilistic.Models
    Assembly: Microsoft.ML.Probabilistic.Compiler.dll
    Syntax
    public abstract class SharedVariable<DomainType> : ISharedVariable
    Type Parameters
    Name Description
    DomainType

    Domian type of the variable

    Remarks

    A typical use of this is for large data sets where the likelihood parts of the model cannot all fit in memory. The solution is to divide the data into chunks (or 'batches'), and specify a single submodel which includes the likelihood factors and variables for one chunk, along with the shared parameters; the number of copies of the submodel is set to the number of chunks. In a related pattern, there are one or more additional submodels for defining the parameter variables.

    Fields

    Name

    Name of the shared variable.

    Declaration
    public string Name
    Field Value
    Type Description
    String

    Properties

    IsEvidenceVariable

    Marks this shared variable as one that calculates evidence

    Declaration
    public bool IsEvidenceVariable { get; set; }
    Property Value
    Type Description
    Boolean

    Methods

    GetCopyFor(Model)

    Gets a copy of the variable for the specified model.

    Declaration
    public abstract Variable<DomainType> GetCopyFor(Model model)
    Parameters
    Type Name Description
    Model model

    Model id.

    Returns
    Type Description
    Variable<DomainType>

    GetEvidenceCorrection()

    Gets the evidence correction for this shared variable.

    Declaration
    public abstract double GetEvidenceCorrection()
    Returns
    Type Description
    Double

    InferOutput(IGeneratedAlgorithm, Model, Int32)

    Infer the shared variable's output message for the given model and batch number.

    Declaration
    public abstract void InferOutput(IGeneratedAlgorithm ca, Model modelNumber, int batchNumber)
    Parameters
    Type Name Description
    IGeneratedAlgorithm ca

    The compiled algorithm.

    Model modelNumber

    The model id.

    Int32 batchNumber

    The batch number.

    InferOutput(InferenceEngine, Model, Int32)

    Infer the shared variable's output message for the given model and batch number.

    Declaration
    public abstract void InferOutput(InferenceEngine engine, Model modelNumber, int batchNumber)
    Parameters
    Type Name Description
    InferenceEngine engine

    The inference engine.

    Model modelNumber

    The model id.

    Int32 batchNumber

    The batch number.

    Marginal<T>()

    Get the marginal distribution for the shared variable, converted to type T.

    Declaration
    public abstract T Marginal<T>()
    Returns
    Type Description
    T
    Type Parameters
    Name Description
    T

    The desired type

    Named(String)

    Inline method for naming a shared variable.

    Declaration
    public SharedVariable<DomainType> Named(string name)
    Parameters
    Type Name Description
    String name

    The name

    Returns
    Type Description
    SharedVariable<DomainType>

    this

    Random<DistributionType>(DistributionType, Boolean)

    Creates a shared random variable with the specified prior distribution.

    Declaration
    public static SharedVariable<DomainType> Random<DistributionType>(DistributionType prior, bool divideMessages = true)
        where DistributionType : IDistribution<DomainType>, Sampleable<DomainType>, SettableToProduct<DistributionType>, ICloneable, SettableToUniform, SettableTo<DistributionType>, SettableToRatio<DistributionType>, CanGetLogAverageOf<DistributionType>
    Parameters
    Type Name Description
    DistributionType prior

    Prior

    Boolean divideMessages

    Use division (the faster default) for calculating messages to batches

    Returns
    Type Description
    SharedVariable<DomainType>
    Type Parameters
    Name Description
    DistributionType

    Distribution type

    Random<DistributionArrayType>(Range, DistributionArrayType, Boolean)

    Creates a 1D array of shared random variables of size given by the specified range.

    Declaration
    public static SharedVariableArray<DomainType> Random<DistributionArrayType>(Range range, DistributionArrayType prior, bool divideMessages = true)
        where DistributionArrayType : IDistribution<DomainType[]>, Sampleable<DomainType[]>, SettableToProduct<DistributionArrayType>, ICloneable, SettableToUniform, SettableTo<DistributionArrayType>, SettableToRatio<DistributionArrayType>, CanGetLogAverageOf<DistributionArrayType>
    Parameters
    Type Name Description
    Range range

    Range.

    DistributionArrayType prior

    A distribution over an array, to use as the prior.

    Boolean divideMessages

    Use division (the faster default) for calculating messages to batches

    Returns
    Type Description
    SharedVariableArray<DomainType>
    Type Parameters
    Name Description
    DistributionArrayType

    The type of the supplied prior

    Random<DistributionArrayType>(VariableArray<DomainType>, Range, DistributionArrayType, Boolean)

    Creates a 1D jagged array of shared random variables.

    Declaration
    public static ISharedVariableArray<VariableArray<DomainType>, DomainType[][]> Random<DistributionArrayType>(VariableArray<DomainType> itemPrototype, Range range, DistributionArrayType prior, bool divideMessages = true)
        where DistributionArrayType : IDistribution<DomainType[][]>, Sampleable<DomainType[][]>, SettableToProduct<DistributionArrayType>, ICloneable, SettableToUniform, SettableTo<DistributionArrayType>, SettableToRatio<DistributionArrayType>, CanGetLogAverageOf<DistributionArrayType>
    Parameters
    Type Name Description
    VariableArray<DomainType> itemPrototype

    A fresh variable object representing an array element.

    Range range

    Outer range.

    DistributionArrayType prior

    Prior for the array.

    Boolean divideMessages

    Use division (the faster default) for calculating messages to batches

    Returns
    Type Description
    ISharedVariableArray<VariableArray<DomainType>, DomainType[][]>
    Type Parameters
    Name Description
    DistributionArrayType

    Random<ItemType, DistributionArrayType>(ItemType, Range, DistributionArrayType, Boolean)

    Creates a generic jagged array of shared random variables.

    Declaration
    public static ISharedVariableArray<ItemType, DomainType> Random<ItemType, DistributionArrayType>(ItemType itemPrototype, Range range, DistributionArrayType prior, bool divideMessages = true)
        where ItemType : Variable, SettableTo<ItemType>, ICloneable where DistributionArrayType : IDistribution<DomainType>, Sampleable<DomainType>, SettableToProduct<DistributionArrayType>, ICloneable, SettableToUniform, SettableTo<DistributionArrayType>, SettableToRatio<DistributionArrayType>, CanGetLogAverageOf<DistributionArrayType>
    Parameters
    Type Name Description
    ItemType itemPrototype

    A fresh variable object representing an array element.

    Range range

    Outer range

    DistributionArrayType prior

    Prior for the array.

    Boolean divideMessages

    Use division (the faster default) for calculating messages to batches

    Returns
    Type Description
    ISharedVariableArray<ItemType, DomainType>
    Type Parameters
    Name Description
    ItemType

    Item type

    DistributionArrayType

    Distribution array type

    SetDefinitionTo(Model, Variable<DomainType>)

    Sets the definition of the shared variable.

    Declaration
    public abstract void SetDefinitionTo(Model model, Variable<DomainType> definition)
    Parameters
    Type Name Description
    Model model

    Model id.

    Variable<DomainType> definition

    Defining variable.

    Remarks

    Use this method if the model is defining the shared variable rather than using one defined in this or another model.

    SetInput(Model, Int32)

    Sets the shared variable's inbox for a given model and batch.

    Declaration
    public abstract void SetInput(Model modelNumber, int batchNumber)
    Parameters
    Type Name Description
    Model modelNumber
    Int32 batchNumber

    ToString()

    ToString override.

    Declaration
    public override string ToString()
    Returns
    Type Description
    String
    Overrides
    Object.ToString()

    Implements

    ISharedVariable
    In This Article
    Back to top Copyright © .NET Foundation. All rights reserved.