I observed a bug that ScoreComponentCollection core entries would retain their score even after ZeroAll(). This may have affected the Moses implementation of MIRA.
* std::valarray::resize(0) means "resize to 0" [1] * subsequent accesses using operator[] result in undefined behavior [2] FeatureVector::clear() is used by ScoreComponentCollection::ZeroAll(), which in turn was used in these places: ./contrib/mira/Main.cpp:665: cumulativeWeights.ZeroAll(); ./contrib/mira/Main.cpp:666: cumulativeWeightsBinary.ZeroAll(); ./moses/Incremental.cpp:580: features.ZeroAll(); It seems to me that the Moses implementation of MIRA may have been affected? [1] http://www.cplusplus.com/reference/valarray/valarray/resize/ [2] http://www.cplusplus.com/reference/valarray/valarray/operator%5B%5D/ --- moses/FeatureVector.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/moses/FeatureVector.cpp b/moses/FeatureVector.cpp index 45a198c..f92bced 100644 --- a/moses/FeatureVector.cpp +++ b/moses/FeatureVector.cpp @@ -175,7 +175,7 @@ void FVector::resize(size_t newsize) void FVector::clear() { - m_coreFeatures.resize(0); + m_coreFeatures.resize(m_coreFeatures.size(), 0); m_features.clear(); } -- 2.7.0 _______________________________________________ Moses-support mailing list [email protected] http://mailman.mit.edu/mailman/listinfo/moses-support
