Ejemplo n.º 1
0
 public virtual bool isEqual(GMMDiag g)
 {
     if (this.getNgauss() != g.getNgauss())
     {
         return(false);
     }
     if (this.getNgauss() != g.getNcoefs())
     {
         return(false);
     }
     for (int i = 0; i < this.getNgauss(); i++)
     {
         if (this.isDiff(this.getWeight(i), g.getWeight(i)))
         {
             return(false);
         }
         for (int j = 0; j < this.getNcoefs(); j++)
         {
             if (this.isDiff(this.getMean(i, j), g.getMean(i, j)))
             {
                 return(false);
             }
             if (this.isDiff(this.getVar(i, j), g.getVar(i, j)))
             {
                 return(false);
             }
         }
     }
     return(true);
 }
Ejemplo n.º 2
0
        public virtual GMMDiag getMarginal(bool[] mask)
        {
            int num  = 0;
            int num2 = mask.Length;

            for (int i = 0; i < num2; i++)
            {
                int j = mask[i] ? 1 : 0;
                if (j != 0)
                {
                    num++;
                }
            }
            GMMDiag gmmdiag = new GMMDiag(this.getNgauss(), num);

            num2 = 0;
            for (int i = 0; i < this.ncoefs; i++)
            {
                if (mask[i])
                {
                    for (int j = 0; j < this.ngauss; j++)
                    {
                        gmmdiag.setMean(j, num2, this.getMean(j, i));
                        gmmdiag.setVar(j, num2, this.getVar(j, i));
                    }
                    num2++;
                }
            }
            for (int i = 0; i < this.ngauss; i++)
            {
                gmmdiag.setWeight(i, this.getWeight(i));
            }
            gmmdiag.precomputeDistance();
            return(gmmdiag);
        }
Ejemplo n.º 3
0
        public virtual GMMDiag getGauss(int i)
        {
            GMMDiag gmmdiag = new GMMDiag(1, this.getNcoefs());

            ByteCodeHelper.arraycopy_primitive_4(this.means[i], 0, gmmdiag.means[0], 0, this.getNcoefs());
            ByteCodeHelper.arraycopy_primitive_4(this.covar[i], 0, gmmdiag.covar[0], 0, this.getNcoefs());
            gmmdiag.setWeight(0, 1f);
            gmmdiag.precomputeDistance();
            return(gmmdiag);
        }
Ejemplo n.º 4
0
        public virtual GMMDiag merge(GMMDiag g, float w1)
        {
            GMMDiag gmmdiag = new GMMDiag(this.getNgauss() + g.getNgauss(), this.getNcoefs());

            for (int i = 0; i < this.getNgauss(); i++)
            {
                ByteCodeHelper.arraycopy_primitive_4(this.means[i], 0, gmmdiag.means[i], 0, this.getNcoefs());
                ByteCodeHelper.arraycopy_primitive_4(this.covar[i], 0, gmmdiag.covar[i], 0, this.getNcoefs());
                gmmdiag.setWeight(i, this.getWeight(i) * w1);
            }
            for (int i = 0; i < g.getNgauss(); i++)
            {
                ByteCodeHelper.arraycopy_primitive_4(g.means[i], 0, gmmdiag.means[this.ngauss + i], 0, this.getNcoefs());
                ByteCodeHelper.arraycopy_primitive_4(g.covar[i], 0, gmmdiag.covar[this.ngauss + i], 0, this.getNcoefs());
                gmmdiag.setWeight(this.ngauss + i, g.getWeight(i) * (1f - w1));
            }
            gmmdiag.precomputeDistance();
            return(gmmdiag);
        }
Ejemplo n.º 5
0
        private SingleHMM loadHMM(BufferedReader bufferedReader, string text, List list)
        {
            GMMDiag gmmdiag = null;
            string  text2   = "";

            while (!String.instancehelper_startsWith(text2, "<NUMSTATES>"))
            {
                text2 = bufferedReader.readLine();
            }
            int num = Integer.parseInt(String.instancehelper_substring(text2, String.instancehelper_indexOf(text2, 32) + 1));

            num--;
            SingleHMM singleHMM = new SingleHMM(num);

            singleHMM.setName(text);
            singleHMM.hmmset = this;
            while (!String.instancehelper_startsWith(text2, "<STATE>"))
            {
                text2 = bufferedReader.readLine();
            }
            while (String.instancehelper_startsWith(text2, "<STATE>"))
            {
                int num2 = Integer.parseInt(String.instancehelper_substring(text2, String.instancehelper_indexOf(text2, 32) + 1));
                num2--;
                text2 = bufferedReader.readLine();
                int gmmidx;
                if (String.instancehelper_startsWith(text2, "~s"))
                {
                    string text3 = String.instancehelper_substring(text2, String.instancehelper_indexOf(text2, 34) + 1, String.instancehelper_lastIndexOf(text2, 34));
                    int    i;
                    for (i = 0; i < list.size(); i++)
                    {
                        gmmdiag = (GMMDiag)list.get(i);
                        if (String.instancehelper_equals(gmmdiag.nom, text3))
                        {
                            break;
                        }
                    }
                    gmmidx = i;
                    if (i == list.size())
                    {
                        java.lang.System.err.println(new StringBuilder().append("Error creatiing HMM : state ").append(text).append(" not found").toString());
                        java.lang.System.exit(1);
                    }
                }
                else
                {
                    this.loadState(bufferedReader, "", text2);
                    gmmidx  = this.__gmms.size() - 1;
                    gmmdiag = (GMMDiag)this.__gmms.get(this.__gmms.size() - 1);
                }
                HMMState hmmstate = new HMMState(gmmdiag, new Lab(text, num2));
                hmmstate.gmmidx = gmmidx;
                this.__states.add(hmmstate);
                singleHMM.setState(num2 - 1, hmmstate);
                text2 = bufferedReader.readLine();
                if (String.instancehelper_startsWith(text2, "<GCONST>"))
                {
                    text2 = bufferedReader.readLine();
                }
            }
            if (String.instancehelper_startsWith(text2, "~t"))
            {
                string text4 = String.instancehelper_substring(text2, String.instancehelper_indexOf(text2, 34) + 1, String.instancehelper_lastIndexOf(text2, 34));
                int    num3  = this.getTrans(text4);
                singleHMM.setTrans(num3);
            }
            else
            {
                if (!String.instancehelper_startsWith(text2, "<TRANSP>"))
                {
                    java.lang.System.err.println(new StringBuilder().append("Error reading model: missing transitions.").append(text2).toString());
                    java.lang.System.exit(1);
                }
                this.loadTrans(bufferedReader, null, text2);
                singleHMM.setTrans(this.trans);
            }
            text2 = bufferedReader.readLine();
            if (!String.instancehelper_startsWith(text2, "<ENDHMM>"))
            {
                java.lang.System.err.println(new StringBuilder().append("Error reading model: missing ENDHMM.").append(text2).toString());
                java.lang.System.exit(1);
            }
            return(singleHMM);
        }
Ejemplo n.º 6
0
 public HMMState(GMMDiag g, Lab l)
 {
     this.gmmidx = -1;
     this.lab    = l;
     this.__gmm  = g;
 }