@@ -21,37 +21,34 @@ namespace Nn {
2121Core::ParameterInt CombineLabelScorer::paramNumLabelScorers (
2222 " num-scorers" , " Number of label scorers to combine" , 1 , 1 );
2323
24- Core::ParameterFloat CombineLabelScorer::paramScale (
25- " scale" , " Scores of a sub-label-scorer are scaled by this factor" , 1.0 );
26-
2724CombineLabelScorer::CombineLabelScorer (Core::Configuration const & config)
2825 : Core::Component(config),
2926 Precursor (config, TransitionPresetType::ALL) {
3027 size_t numLabelScorers = paramNumLabelScorers (config);
3128 for (size_t i = 0ul ; i < numLabelScorers; ++i) {
3229 Core::Configuration subConfig = select (std::string (" scorer-" ) + std::to_string (i + 1 ));
33- scaledScorers_ .push_back ({ Nn::Module::instance ().labelScorerFactory ().createLabelScorer (subConfig), static_cast <Score>( paramScale (subConfig))} );
30+ scorers_ .push_back (Nn::Module::instance ().labelScorerFactory ().createLabelScorer (subConfig));
3431 }
3532}
3633
3734void CombineLabelScorer::reset () {
38- for (auto & scaledScorer : scaledScorers_ ) {
39- scaledScorer. scorer ->reset ();
35+ for (auto & scorer : scorers_ ) {
36+ scorer->reset ();
4037 }
4138}
4239
4340void CombineLabelScorer::signalNoMoreFeatures () {
44- for (auto & scaledScorer : scaledScorers_ ) {
45- scaledScorer. scorer ->signalNoMoreFeatures ();
41+ for (auto & scorer : scorers_ ) {
42+ scorer->signalNoMoreFeatures ();
4643 }
4744}
4845
4946ScoringContextRef CombineLabelScorer::getInitialScoringContext () {
5047 std::vector<ScoringContextRef> scoringContexts;
51- scoringContexts.reserve (scaledScorers_ .size ());
48+ scoringContexts.reserve (scorers_ .size ());
5249
53- for (const auto & scaledScorer : scaledScorers_ ) {
54- scoringContexts.push_back (scaledScorer. scorer ->getInitialScoringContext ());
50+ for (const auto & scorer : scorers_ ) {
51+ scoringContexts.push_back (scorer->getInitialScoringContext ());
5552 }
5653 return Core::ref (new CombineScoringContext (std::move (scoringContexts)));
5754}
@@ -63,41 +60,41 @@ void CombineLabelScorer::cleanupCaches(Core::CollapsedVector<ScoringContextRef>
6360 combineContexts.push_back (dynamic_cast <const CombineScoringContext*>(activeContext.get ()));
6461 }
6562
66- for (size_t scorerIdx = 0ul ; scorerIdx < scaledScorers_ .size (); ++scorerIdx) {
67- auto const & scaledScorer = scaledScorers_ [scorerIdx];
63+ for (size_t scorerIdx = 0ul ; scorerIdx < scorers_ .size (); ++scorerIdx) {
64+ auto const & scorer = scorers_ [scorerIdx];
6865 Core::CollapsedVector<ScoringContextRef> subScoringContexts;
6966 for (auto const & combineContext : combineContexts) {
7067 subScoringContexts.push_back (combineContext->scoringContexts [scorerIdx]);
7168 }
7269
73- scaledScorer. scorer ->cleanupCaches (subScoringContexts);
70+ scorer->cleanupCaches (subScoringContexts);
7471 }
7572}
7673
7774void CombineLabelScorer::addInput (DataView const & input) {
78- for (auto & scaledScorer : scaledScorers_ ) {
79- scaledScorer. scorer ->addInput (input);
75+ for (auto & scorer : scorers_ ) {
76+ scorer->addInput (input);
8077 }
8178}
8279
8380void CombineLabelScorer::addInputs (DataView const & input, size_t nTimesteps) {
84- for (auto & scaledScorer : scaledScorers_ ) {
85- scaledScorer. scorer ->addInputs (input, nTimesteps);
81+ for (auto & scorer : scorers_ ) {
82+ scorer->addInputs (input, nTimesteps);
8683 }
8784}
8885
8986ScoringContextRef CombineLabelScorer::extendedScoringContextInternal (Request const & request) {
9087 auto combineContext = dynamic_cast <const CombineScoringContext*>(request.context .get ());
9188
9289 std::vector<ScoringContextRef> extScoringContexts;
93- extScoringContexts.reserve (scaledScorers_ .size ());
90+ extScoringContexts.reserve (scorers_ .size ());
9491
95- auto scorerIt = scaledScorers_ .begin ();
92+ auto scorerIt = scorers_ .begin ();
9693 auto contextIt = combineContext->scoringContexts .begin ();
9794
98- for (; scorerIt != scaledScorers_ .end (); ++scorerIt, ++contextIt) {
95+ for (; scorerIt != scorers_ .end (); ++scorerIt, ++contextIt) {
9996 Request subRequest{*contextIt, request.nextToken , request.transitionType };
100- extScoringContexts.push_back (scorerIt-> scorer ->extendedScoringContext (subRequest));
97+ extScoringContexts.push_back ((* scorerIt) ->extendedScoringContext (subRequest));
10198 }
10299 return Core::ref (new CombineScoringContext (std::move (extScoringContexts)));
103100}
@@ -109,22 +106,22 @@ std::optional<LabelScorer::ScoreWithTime> CombineLabelScorer::computeScoreWithTi
109106 auto combineContext = dynamic_cast <const CombineScoringContext*>(request.context .get ());
110107
111108 // Iterate over all the scorers and accumulate their results into `accumResult`
112- auto scorerIt = scaledScorers_ .begin ();
109+ auto scorerIt = scorers_ .begin ();
113110 auto contextIt = combineContext->scoringContexts .begin ();
114- for (; scorerIt != scaledScorers_ .end (); ++scorerIt, ++contextIt) {
111+ for (; scorerIt != scorers_ .end (); ++scorerIt, ++contextIt) {
115112 // Prepare sub-request for the current scorer by extracting the appropriate
116113 // ScoringContext from the combined ScoringContext
117114 Request subRequest{*contextIt, request.nextToken , request.transitionType };
118115
119116 // Run current scorer
120- auto result = scorerIt-> scorer ->computeScoreWithTime (subRequest);
117+ auto result = (* scorerIt) ->computeScoreWithTime (subRequest);
121118 if (!result) {
122119 return {};
123120 }
124121
125122 // Merge results of current scorer into `accumResult`
126123 // Scores are weighted sum, timeframes are maximum
127- accumResult.score += result->score * scorerIt-> scale ;
124+ accumResult.score += result->score ;
128125 accumResult.timeframe = std::max (accumResult.timeframe , result->timeframe );
129126 }
130127
@@ -147,7 +144,7 @@ std::optional<LabelScorer::ScoresWithTimes> CombineLabelScorer::computeScoresWit
147144 }
148145
149146 // Iterate over all the scorers and accumulate their results into `accumResult`
150- for (size_t scorerIdx = 0ul ; scorerIdx < scaledScorers_ .size (); ++scorerIdx) {
147+ for (size_t scorerIdx = 0ul ; scorerIdx < scorers_ .size (); ++scorerIdx) {
151148 // Prepare sub-requests for the current scorer by extracting the appropriate
152149 // ScoringContext from all the CombineScoringContexts
153150 std::vector<Request> subRequests;
@@ -159,7 +156,7 @@ std::optional<LabelScorer::ScoresWithTimes> CombineLabelScorer::computeScoresWit
159156 }
160157
161158 // Run current scorer
162- auto subResults = scaledScorers_ [scorerIdx]. scorer ->computeScoresWithTimes (subRequests);
159+ auto subResults = scorers_ [scorerIdx]->computeScoresWithTimes (subRequests);
163160 if (!subResults) {
164161 return {};
165162 }
@@ -168,7 +165,7 @@ std::optional<LabelScorer::ScoresWithTimes> CombineLabelScorer::computeScoresWit
168165 // Scores are weighted sum, timeframes are maximum
169166 Core::CollapsedVector<Speech::TimeframeIndex> newTimeframes;
170167 for (size_t requestIdx = 0ul ; requestIdx < requests.size (); ++requestIdx) {
171- accumResult.scores [requestIdx] += subResults->scores [requestIdx] * scaledScorers_[scorerIdx]. scale ;
168+ accumResult.scores [requestIdx] += subResults->scores [requestIdx];
172169 newTimeframes.push_back (std::max (accumResult.timeframes [requestIdx], subResults->timeframes [requestIdx]));
173170 }
174171 accumResult.timeframes = newTimeframes;
0 commit comments