예제 #1
0
        public void GaussianCustomSerializationTest()
        {
            using (var stream = new MemoryStream())
            {
                var writer = new WrappedBinaryWriter(new BinaryWriter(stream));
                writer.Write(Gaussian.FromNatural(-13.89, 436.12));
                writer.Write(Gaussian.PointMass(Math.PI));
                writer.Write(Gaussian.Uniform());

                stream.Seek(0, SeekOrigin.Begin);

                using (var reader = new WrappedBinaryReader(new BinaryReader(stream)))
                {
                    Gaussian natural = reader.ReadGaussian();
                    Assert.Equal(-13.89, natural.MeanTimesPrecision);
                    Assert.Equal(436.12, natural.Precision);

                    Gaussian pointMass = reader.ReadGaussian();
                    Assert.True(pointMass.IsPointMass);
                    Assert.Equal(Math.PI, pointMass.GetMean());

                    Gaussian uniform = reader.ReadGaussian();
                    Assert.True(uniform.IsUniform());
                }
            }
        }
예제 #2
0
        public void GammaCustomSerializationTest()
        {
            using (var stream = new MemoryStream())
            {
                var writer = new WrappedBinaryWriter(new BinaryWriter(stream));
                writer.Write(Gamma.FromShapeAndRate(1.0, 10.0));
                writer.Write(Gamma.PointMass(Math.PI));
                writer.Write(Gamma.Uniform());

                stream.Seek(0, SeekOrigin.Begin);

                using (var reader = new WrappedBinaryReader(new BinaryReader(stream)))
                {
                    Gamma shapeAndRate = reader.ReadGamma();
                    Assert.Equal(1.0, shapeAndRate.Shape);
                    Assert.Equal(10.0, shapeAndRate.Rate);

                    Gamma pointMass = reader.ReadGamma();
                    Assert.True(pointMass.IsPointMass);
                    Assert.Equal(Math.PI, pointMass.GetMean());

                    Gamma uniform = reader.ReadGamma();
                    Assert.True(uniform.IsUniform());
                }
            }
        }
예제 #3
0
파일: Utilities.cs 프로젝트: kant2002/infer
        /// <summary>
        /// Persists an object that controls its binary serialization to the specified stream.
        /// </summary>
        /// <param name="obj">The object to be serialized.</param>
        /// <param name="stream">The serialization stream.</param>
        /// <remarks>To load a saved learner, you can use the factory methods whose names start with LoadBackwardCompatible.</remarks>
        public static void SaveForwardCompatibleAsBinary(this ICustomSerializable obj, Stream stream)
        {
            if (obj == null)
            {
                throw new ArgumentNullException(nameof(obj));
            }

            if (stream == null)
            {
                throw new ArgumentNullException(nameof(stream));
            }

            using (var writer = new WrappedBinaryWriter(new BinaryWriter(stream, Encoding.UTF8, true)))
            {
                obj.SaveForwardCompatible(writer);
            }
        }