Beispiel #1
0
        /**
         * Calculates the scores for each component in the senone.
         *
         * @param feature the feature to score
         * @return the LogMath log scores for the feature, one for each component
         */

        public override float[] CalculateComponentScore(IData feature)
        {
            _mixtureComponentSet.UpdateScores(feature);
            var scores   = new float[_mixtureComponentSet.Size()];
            var scoreIdx = 0;

            for (var i = 0; i < MixtureWeights.StreamsNum; i++)
            {
                for (var j = 0; j < _mixtureComponentSet.GauNum; j++)
                {
                    scores[scoreIdx++] = _mixtureComponentSet.GetGauScore(i, j) + MixtureWeights.Get(_Id, i, _mixtureComponentSet.GetGauId(i, j));
                }
            }
            return(scores);
        }
Beispiel #2
0
        public override float CalculateScore(IData feature)
        {
            _mixtureComponentSet.UpdateTopScores(feature);
            float ascore = 0;

            for (var i = 0; i < MixtureWeights.StreamsNum; i++)
            {
                var logTotal = LogMath.LogZero;
                for (var j = 0; j < _mixtureComponentSet.TopGauNum; j++)
                {
                    var topGauScore    = _mixtureComponentSet.GetTopGauScore(i, j);
                    var topGauId       = _mixtureComponentSet.GetTopGauId(i, j);
                    var mixtureWeightx = MixtureWeights.Get(_Id, i, topGauId);
                    logTotal = LogMath.AddAsLinear(logTotal, topGauScore + mixtureWeightx);
                }
                ascore += logTotal;
            }
            return(ascore);
        }