Ejemplo n.º 1
0
    public static void CreateModelFromFrames(string readPath, string writePath)
    {
        SequenceList seq = Utils.FramesToSequenceList(Utils.LoadListListFrame(readPath));

        HiddenMarkovModel <MultivariateNormalDistribution> hmm;
        MultivariateNormalDistribution mnd = new MultivariateNormalDistribution(seq.GetArray()[0][0].Length);

        hmm = new HiddenMarkovModel <MultivariateNormalDistribution>(new Forward(5), mnd);

        var teacher = new BaumWelchLearning <MultivariateNormalDistribution>(hmm);

        teacher.Tolerance      = 0.0001;
        teacher.Iterations     = 0;
        teacher.FittingOptions = new NormalOptions()
        {
            Diagonal       = true,            // only diagonal covariance matrices
            Regularization = 1e-5             // avoid non-positive definite errors
        };

        double logLikelihood = teacher.Run(seq.GetArray());

        Debug.Log(readPath + " - " + seq.sequences.Count + " - " + logLikelihood);

        hmm.Save(writePath);
    }
Ejemplo n.º 2
0
        /*public static void SaveSequenceList(SequenceList seqList, string path)
         * {
         *  Stream writeStream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None);
         *  seqList.Save(writeStream);
         *  writeStream.Close();
         * }
         *
         * public static SequenceList LoadSequenceList(string path)
         * {
         *  Stream readStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
         *  SequenceList seqList = SequenceList.Load(readStream);
         *  readStream.Close();
         *  return seqList;
         * }*/

        public static HiddenMarkovModel <MultivariateNormalDistribution> CreateModelFromFrames(List <List <Frame> > frames)
        {
            SequenceList sequences = Utils.FramesToSequenceList(frames);

            HiddenMarkovModel <MultivariateNormalDistribution> hmm;
            MultivariateNormalDistribution mnd = new MultivariateNormalDistribution(sequences.GetDimensions());

            hmm = new HiddenMarkovModel <MultivariateNormalDistribution>(new Forward(5), mnd);

            var teacher = new BaumWelchLearning <MultivariateNormalDistribution>(hmm);

            teacher.Tolerance      = 0.0001;
            teacher.Iterations     = 0;
            teacher.FittingOptions = new NormalOptions()
            {
                Diagonal       = true, // only diagonal covariance matrices
                Regularization = 1e-5  // avoid non-positive definite errors
            };

            teacher.Run(sequences.GetArray());

            return(hmm);
        }