Hi,
When I save a model in Python using torch.save(model, PATH) and then load it with torch.load() in Jupyter, it has the following error (I know that using torch.save(model.state_dict(), PATH) is better, but since my model architecture may change in the future, I prefer to save the whole model.):
TypeError Traceback (most recent call last)
<ipython-input-16-88409a4cae12> in <module>()
42
---> 44 net = torch.load(filepath)
/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/torch/serialization.py in load(f, map_location, pickle_module)
265 f = open(f, 'rb')
266 try:
--> 267 return _load(f, map_location, pickle_module)
268 finally:
269 if new_fd:
/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/torch/serialization.py in _load(f, map_location, pickle_module)
418 unpickler = pickle_module.Unpickler(f)
419 unpickler.persistent_load = persistent_load
--> 420 result = unpickler.load()
421
422 deserialized_storage_keys = pickle_module.load(f)
/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/torch/serialization.py in persistent_load(saved_id)
381 # Ignore containers that don't have any sources saved
382 if all(data[1:]):
--> 383 _check_container_source(*data)
384 return data[0]
385 elif typename == 'storage':
/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/torch/serialization.py in _check_container_source(container_type, source_file, original_source)
291
292 def _check_container_source(container_type, source_file, original_source):
--> 293 current_source = inspect.getsource(container_type)
294 if original_source != current_source:
295 if container_type.dump_patches:
/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/inspect.py in getsource(object)
942 or code object. The source code is returned as a single string. An
943 OSError is raised if the source code cannot be retrieved."""
--> 944 lines, lnum = getsourcelines(object)
945 return ''.join(lines)
946
/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/inspect.py in getsourcelines(object)
929 raised if the source code cannot be retrieved."""
930 object = unwrap(object)
--> 931 lines, lnum = findsource(object)
932
933 if ismodule(object):
/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/inspect.py in findsource(object)
742 is raised if the source code cannot be retrieved."""
743
--> 744 file = getsourcefile(object)
745 if file:
746 # Invalidate cache if needed.
/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/inspect.py in getsourcefile(object)
658 Return None if no way can be identified to get the source.
659 """
--> 660 filename = getfile(object)
661 all_bytecode_suffixes = importlib.machinery.DEBUG_BYTECODE_SUFFIXES[:]
662 all_bytecode_suffixes += importlib.machinery.OPTIMIZED_BYTECODE_SUFFIXES[:]
/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/inspect.py in getfile(object)
611 if hasattr(object, '__file__'):
612 return object.__file__
--> 613 raise TypeError('{!r} is a built-in class'.format(object))
614 if ismethod(object):
615 object = object.__func__
TypeError: <module '__main__'> is a built-in class
Is there remedy for this problem?