Simplify param names in callable optim configs #2814
Merged
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 simplifies the interface of per-parameter callable optim configs, and updates it to make sense when
PyroModule
replacespyro.module
as the default interface. Basically:BEFORE this PR the callable took a pair (
module_name
,param_name
), where:pyro.module
,module_name
was the name passed topyro.module
andparam_name
was the fully-qualified name within that module.PyroModule...
,module_name
==param_name
== the fully-qualified name of the parameter, e.g.Guide.locs.rate
(yes this is weird).AFTER this PR the callable takes a single
param_name
which is the fully qualified name as innn.Module.named_parameters()
, e.g.Guide.locs.rate
. Crucially, this name remains the same even if we convert a submodule from an nn.Module to a PyroModule viato_pyro_module_()
(and i've added a test for this).This also fixes a bug in edge-case interactions between
PyroModule
andto_pyro_module_()
.Backwards compatibility.
The old behavior is still supported but is no longer mentioned in documentation or examples.
Tested
to_pyro_module_()