Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds unit tests for the SGDSolver, checking that it correctly computes an update value for a least squares problem with a simple analytic gradient. All of these tests should fail if the gradient of the net is computed incorrectly (hence the tests assume that net->ForwardBackward and the forward/backward passes of
DummyDataLayer
,InnerProductLayer
, andEuclideanLossLayer
are correct). Some subset of the tests should fail if the solver incorrectly handles the learning rate, weight decay, and/or momentum (verified by modifying lines that handle these parameters insolver.cpp
).This will allow future SGDSolver changes to be made with greater confidence, and hopefully can serve as an example for unit tests to be written for @qipeng's #741 which adds other kinds of solvers.