-
-
Notifications
You must be signed in to change notification settings - Fork 1k
Cleanup and optimize transformers #4348
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Cleanup and optimize transformers #4348
Conversation
vinx13
commented
Jun 28, 2018
- Use linalg in NormOne
- Optimize PruneVarSubMean
550639e
to
af8af72
Compare
This needs a rebase |
Btw whenever you make something linalg, pls ensure there is some test coverage of the changes lines, so that we at least know he results didn’t change in the integration test examples |
dedcb4a
to
bdacb07
Compare
EXPECT_EQ(v.vlen, num_features); | ||
for (auto j : range(v.vlen)) | ||
{ | ||
EXPECT_DOUBLE_EQ(v[j], data[num_features * i + j] / norm[i]); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
cant we use operator()
here?
{ | ||
SGVector<float64_t> v = feats->get_feature_vector(i); | ||
auto result = transformer->apply_to_feature_vector(v); | ||
EXPECT_EQ(result.vlen, num_features); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ASSERT_EQ
to avoid segfault
@@ -102,7 +102,7 @@ void CPruneVarSubMean::cleanup() | |||
SGMatrix<float64_t> | |||
CPruneVarSubMean::apply_to_matrix(SGMatrix<float64_t> matrix) | |||
{ | |||
ASSERT(m_initialized) | |||
REQUIRE(m_initialized, "Transformer has not been fitted.\n"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
offtopic: I would love to move all those general checks to base classes so that they dont get repeated in every specialization....
any thoughts on this
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
shouldn't we use a different exception type other than ShogunException
77a9f85
to
8711ea6
Compare
c1b0299
to
47363cb
Compare
47363cb
to
918fead
Compare
@@ -102,7 +102,7 @@ void CPruneVarSubMean::cleanup() | |||
SGMatrix<float64_t> | |||
CPruneVarSubMean::apply_to_matrix(SGMatrix<float64_t> matrix) | |||
{ | |||
ASSERT(m_initialized) | |||
REQUIRE(m_initialized, "Transformer has not been fitted.\n"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
shouldn't we use a different exception type other than ShogunException
@@ -132,31 +132,18 @@ CPruneVarSubMean::apply_to_matrix(SGMatrix<float64_t> matrix) | |||
/// result in feature matrix | |||
SGVector<float64_t> CPruneVarSubMean::apply_to_feature_vector(SGVector<float64_t> vector) | |||
{ | |||
float64_t* ret=NULL; | |||
REQUIRE(m_initialized, "Transformer has not been fitted.\n"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
shouldn't we use a different exception type other than ShogunException
MS_NOT_AVAILABLE); | ||
} | ||
|
||
void CTransformer::check_fitted() const |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i would rather go with the java like: is_fitted
or is_fit
depending which english we'd like to go with :) but let's stick to british (non north american english as in case of the exception type naming)
CTransformer::CTransformer() : CSGObject() | ||
{ | ||
SG_ADD( | ||
&m_fitted, "fitted", "Whether the transformer has been fitted.", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
let's register this param as is_fitted