Release change history

2.3 Beta 4 12 November 2009

  • Added SharedVariableArray2D.
  • Variable.GammaFromShapeAndScale now supports random parameters.
  • Added support for multiplication of a Gaussian-distributed variable with a Gamma-distributed or Beta-distributed variable.
  • Added Variable.Vector for converting random arrays to random Vectors.
  • MatlabReader added.
  • Improved Gibbs sampling - more models and speed improvements.
  • Supports VisualStudio 2010 beta 2 and October 2009 CTP releases of F#, and fixes F# import error for MicrosoftResearch.Compiler.dll

2.3 Beta 3 September 4 2009

  • Some bug fixes for 2.3 Beta 2.

2.3 Beta 2 August 27 2009

  • BernoulliFromLogOdds and Logistic now support Expectation Propagation.
  • Added plus operator and comparison operators for integer variables.
  • Added Concat, Subvector, and GetItem factors for Vector variables.
  • DiscreteUniform now allows a random size.
  • Observed variables can now be inferred (the result is a point mass distribution on the observed value).
  • Changed the order of arguments to Binomial and Multinomial.
  • Beta distributions print out differently.

2.3 Beta 1 August 3 2009

  • Added Variable.Logistic, Variable.Softmax, Variable.BernoulliFromLogOdds, Variable.DiscreteFromLogProbs, Variable.Binomial, Variable.Multinomial, Variable.AllTrue factors.
  • EP evidence is now computed in a different way, which is more numerically stable. This is relevant when implementing new factors or calling operator methods directly. Specifically, the definition of LogEvidenceRatio (the method for computing EP evidence) has changed. However the overall evidence value is the same as before.
  • Jagged arrays can now be initialized using InitialiseTo.
  • Model is now recompiled when trying to infer a variable not included in an earlier InferAll.
  • Improved handling of nested Switch blocks.
  • Improved handling of If and Case blocks with non-random conditions.
  • Better support for SharedVariableArrays and arrays defined by SetTo.
  • Can now index 2D arrays by observed variables (both indices must be observed).
  • Added Variable.GammaFromShapeAndRate.
  • Reduced memory allocation in the generated code. When possible, messages are now allocated once in the Reset() method and reused across calls to Infer.
  • Added InferenceEngine.ReturnCopies flag.
  • Removed a confusing overload of InferenceEngine.Infer<>
  • Improved accuracy of PositiveDefiniteMatrix.SetToInverse. Added LowerTriangularMatrix.SetToInverse, Matrix.SetToOuter(Matrix), Matrix.SetToOuterTranspose(Matrix).
  • Experimental multicore support using Parallel Extensions library (to use set engine.Compiler.UseParallelForLoops = true)
  • Support for enum types with Variable.EnumDiscrete()
  • Some efficiency improvements for If and Switch blocks
  • Support for returning arrays of distributions from Infer e.g. Infer<Bernoulli[]>()
  • Gibbs sampling. Some factors not yet supported such as gates and array factors.
  • F# wrapper - hides some of API complexity, providing distribution and domain-specific Variable and Distribution arrays types.
  • IronPython wrapper - hides some of API complexity for IronPython users
  • Runs on Linux with Mono

2.2 Beta 2 January 7 2009

  • Fixed bug in multiplication of a Gamma variable
  • Fixed problem with locales which use a comma to represent a decimal point
  • Tutorial example for mixture of Gaussians now matches documentation
  • Reduced memory consumption when transform browser mode is set to 'never'
  • Documented examples using F#, C++/CLI, and IronPython

2.2 Beta December 5, 2008

  • Some minor bug fixes

Version 2.2.31202.0 December 2, 2008

  • Given, Constant and RandomVariable classes are deprecated. Use Variable instead, and set the ObservedValue and IsReadOnly properties as described in the documentation.
  • Support for jagged arrays
  • Variables must now be defined in all branches of an If or Case block unless they are local to that block
  • If, Case, and Switch statements can now take non-random conditions
  • Generated code is now fully commented
  • DLL structure simplified to Infer.Compiler.dll and Infer.Runtime.dll
  • Namespace changes:
    • Algorithms moved to MicrosoftResearch.Infer namespace
    • Many utility classes moved into MicrosoftResearch.Core namespace and sub-namespaces (e.g. MicrosoftResearch.Core.Math)
  • Many classes have been marked internal
  • DistributionArray etc are now for internal use only. They implement IDistribution, and the API provides methods to retrieve .NET arrays of distributions
  • Several methods for creating random int/Vector variables now optionally take a range to indicate the cardinality/dimensionality of the variable
  • Easier to use generated code in a standalone fashion
  • Distribution classes are now serializable
  • Shared variable improvements including support for SharedVariableArray
  • Support for extracting multiple elements from an array using indexing
  • Snapshot of the online documentation is now included in the installed product
  • Many bug fixes

Internal version 2.1.30904.0 September 4, 2008

  • Removed dependence on Reflector.
  • Support for 3D random variable arrays.
  • InitialiseTo() can take a Given, so that initializers may be changed at runtime.
  • Added Variable.Max for taking the maximum of two random doubles.
  • Added Variable.Copy, Variable.PointMass, Variable.Uniform for various distributions.
  • Added operator overloads for +,-,*,/ random variables with constants.
  • Added ^ operator for VectorGaussian.
  • Added option InferenceEngine.Compiler.WriteSourceFiles=false to prevent writing source files (they are compiled in memory instead).
  • Improved accuracy of SetToSum methods.
  • Improved accuracy of message-passing across if/case/switch blocks.
  • Expectation Propagation now handles Beta/Dirichlet distributions in a more robust way, reducing the occurrence of ImproperMessageExceptions.
  • SetToSum now forces a proper distribution by default for Beta/Dirichlet. Setting the static field AllowImproperSum=true restores the old behavior.
  • The order that loop variables appear in array indices can now be different from the nesting order of the loops.
  • More fixes to SetTo in if/case/switch blocks.
  • Fixed handling of AreEqual factor in VMP.
  • Fixed evidence computation for various factors.
  • Fixed bugs in scheduling.
  • Fixed bug in Rand.Perm.
  • Fixed handling of nested if/case blocks.

Internal version 2.1.30523.0 May 23, 2008

  • New API for SharedVariables.
  • Fixed handling of SetTo in if/case/switch blocks.
  • Fixed handling of And and Or factors in VMP.
  • Fixed handling of array variables defined inside gates (they were sometimes incorrectly inferred as constant).
  • VectorGaussian marginal prototype is now inferred for Factor.VectorGaussian with constant arguments.
  • GivenArray.Value and ConstantArray.Value are now IList<T> instead of T[].
  • Reduced the occurrence of improper message exceptions during EP.
  • InitialiseTo only accepts distribution classes (not arrays as previously).
  • Range constructor no longer accepts a name (use the Named method instead).
  • Improved handling of boundary cases in Factor.IsBetween.
  • Variable.ConstrainBetween is more efficient (has a dedicated operator class).
  • Speed ups to DistributionArray
  • Changed default GeneratedSource folder to be below the current folder.
  • The name of generated classes can now be specified, using the inference engine ModelName property.
  • Removed debug messages, and instead made InferenceEngine.ShowProgress default to true (on).

Internal version 2.1.30320.0 March 20, 2008

  • Proper attribute added to message function parameters which must be proper. Currently, this has the same behaviour as the "SkipIfUniform" attribute.
  • Improved handling of corner cases in SetToSum.
  • Shared variables work with VMP
  • Marginal prototypes are propagated automatically for Factor.GetItem and Factor.GetItems.
  • XML code documentation added to install for improved Intellisense
  • Some optimisations for message operators
  • Improved diagnostic messages during compile

Internal version 2.1.30310.0 March 10, 2008

  • Increased accuracy in some EP messages
  • Improper message exceptions happen less often
  • Improved scheduling of VMP
  • Fixed indexing of constant/given arrays by random integers
  • Fixed click model example

Internal version 2.1.30305.0 March 5, 2008

Highlights:
  • Expectation propagation (EP)
  • Variational Message Passing (VMP)
  • Belief propagation (sum-product algorithm) as a special case of EP.
  • Exponential family distributions: Gaussian, Gamma, Beta, etc.
  • Factors for arithmetic and boolean operations
  • Modelling API
  • Model compilation for efficient execution
  • Consistent operator syntax for message computation
  • Plates
  • Gates
  • Evidence computation
  • Many application samples and tutorial examples

Last modified at 11/11/2009 8:03 PM  by John Guiver 
©2009 Microsoft Corporation. All rights reserved.  Terms of Use | Trademarks | Privacy Statement