-
Notifications
You must be signed in to change notification settings - Fork 4
Description
How to define whether search is enabled? Just not do any special handling on this level at all and leave it to the current RETURNN behavior? Or make it more explicit?
From what I can see RETURNN handling should be enough. Assuming using this with automation changes in config can be done elsewhere I think.
Note that this is not just about what is enough to be able to define all networks. Or not sure how you mean it.
It's about being straight forward and clear. I.e. at no time, it should be unclear to the user when search is used.
We do not have to follow exactly the behavior of RETURNN. There are also multiple ways in RETURNN. We can restrict it to one clean way. We can also change it. Or introduce a simpler variant here.
I'm tending to make it explicit. But not sure.
PyTorch also has a similar concept for the train flag (as we do have as well in RETURNN). I.e. some PyTorch modules behave differently depending if they are in train or eval mode (e.g. Dropout). We have exactly the same in RETURNN. And search is a flag like train.
The difference is how these flags are set:
-
In RETURNN, this is all globally, and for search flag, there are some additional (maybe unintuitive) ways to overwrite it. And the flags are implied automatically in RETURNN, depending e.g. on the task, and the user has not much control over it. It is quite hidden.
-
In PyTorch, there are no implicit automatic implied global flags. Every module has its own flag, and it is set explicitly (and easily recursively for all sub modules). Every module has always the train flag set initially, and you can disable it explicitly. So to the user, it's always clear how the flags are set, because the user sets them, and no automatic behavior. The user explicitly writes
model.train()ormodel.eval().
Maybe again, here in returnn-common, we can follow the PyTorch style a bit for this, and also copy it for the search flag? Not sure...
Originally posted by @albertz in #16 (comment)