Central function to canonicalize state dicts #40
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.
I wanted to add support for another arch today and noticed the pretrained models are checkpoints saved as
.pth
files. Since they are.pth
files, our code for simplifying.ckpt
files does not run, and the loaded state dict is a mess.So I combined the code for cleaning up
.ckpt
files and the code for unwrapping nested dicts into one function:canonicalize_state_dict
. The job of this function to bring all state dicts into a common form.Open question: Should this function be public? The
load
functions of individual archs expect a canonicalized state dict, so users must go through anArchRegistry
if they load.pth
(or similar) files themselves. Passingmodel.state_dict()
into aload
function will continue to work though.