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.
Addresses #2161
This aims to make it easier to convert 3rd party
nn.Module
instances toPyroModule
s, as described in @simeneide's forum post.The safest way to do this appears to be to update the
.__class__
attribute in-place:While this appears intrusive, it is equivalent to replacing
nn.Linear -> PyroModule[nn.Linear]
and so forth in the 3rd-party code that created the instance. It should therefore also be compatible with serialization.🐛 Bugfixes
This PR also fixes two bugs surfaced by new tests:
._pyro_set_supermodule()
was being bypassed due tonn.Module
subclasses calling.add_module()
rather than.__setitem__()
directly.tests.common.assert_close("foo", "foo")
Tested
to_pyro_module_(m)
is equivalent to recursively insertingPyroModule[-]