-
Notifications
You must be signed in to change notification settings - Fork 3.4k
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
Structured results (train loop only. val loop separate PR) (PR 2/5) #2615
Conversation
Hello @williamFalcon! Thanks for updating this PR.
Comment last updated at 2020-07-20 22:42:50 UTC |
Codecov Report
@@ Coverage Diff @@
## master #2615 +/- ##
=======================================
- Coverage 91% 91% -0%
=======================================
Files 70 71 +1
Lines 5778 5918 +140
=======================================
+ Hits 5270 5388 +118
- Misses 508 530 +22 |
Personally, I would prefer that the |
the advantage of doing it this way is that you have finegrain control over what to early step or checkpoint on (not all this magic keyword val loss that confuses everyone). 2) it allows new behavior like changing it dynamically during training which has been requested as well , 3) it enables these callbacks to be used in training OR eval loop instead of just eval. whereas with the current callbacks you are stuck with what you put in at the start, and to modify what to early step or checkpoint on you have to init the callbacks, modify the keyword and remember to have those magic words in the return dict. |
@williamFalcon I see what you mean, but I'd still go with the callback. I think, we should just pass the structured result to the callback and then do it as we currently do. I think it's really important to allow this option, since this way it is much easier to change behaviour |
@justusschock that’s what i was thinking. the result would feed directly to the callback, so that you still maintain control via the callback. but just to clarify, you like yhe option of specifying the particular value to condition on in the result? i guess i may have not explained correctly. The callbacks are still there and should be used. But the way you condition what to use for that particular callback is specified in the structured result... |
Then I propose the following: Let the user use both ways. Default the argument here to None. If the argument here is None, you use the one provided by the callback and else you use the one here. I really want to specify what I monitor from my callback, since I want it to be decoupled from my model entirely. |
perfect. i like that a lot. i’ll make them none then. in my personal research, each model uses different things to checkpoint or callback, so i personally prefer to couple it haha. but this approach enables both :) |
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.
just some typos
Co-authored-by: Adrian Wälchli <aedu.waelchli@gmail.com>
Co-authored-by: Adrian Wälchli <aedu.waelchli@gmail.com>
To be clear, the checkpoint_on, early_stop_on will feed the values directly to the appropriate callbacks, so if it is set the user can completely ignore the |
exactly! |
Sure. Can you explain the function of the |
Adds support for cleaner returns between steps.
Expressive syntax
Before
Now:
No need for multiple reduction steps
before
Now