DEV Community

Super Kai (Kazuya Ito)
Super Kai (Kazuya Ito)

Posted on • Edited on

save() and load() in PyTorch

Buy Me a Coffee

*Memos:

save() can save an object as shown below:

*Memos:

  • save() can be used with torch but not with a tensor.
  • The 1st argument with torch is obj(Required-Type:object).
  • The 2nd argument with torch is f(Required-Type:Union[str, PathLike, BinaryIO, IO[bytes]]).
  • The 3rd argument with torch is pickle_module(Optional-Default:pickle-Type:Any).
  • The 4th argument with torch is pickle_protocol(Optional-Default:2-Type:int).
  • The 5th argument with torch is _use_new_zipfile_serialization(Optional-Default:True-Type:bool).
  • The 6th argument with torch is _disable_byteorder_record(Optional-Default:False-Type:bool).
  • Basically, it's used to save a model.

1. Create my_project folder manually:
*Memos:

my_project
Enter fullscreen mode Exit fullscreen mode

2. Save file1(str) in my_project:

import torch
import pickle

torch.save(obj="Hello World", f="my_project/file1")
# Or
# torch.save(obj="Hello World", f="my_project/file1",
#            pickle_module=pickle,
#            pickle_protocol=2,
#            _use_new_zipfile_serialization=True,
#            _disable_byteorder_record=False)

# my_project
#  └-file1 <- Here
Enter fullscreen mode Exit fullscreen mode

3. Save file2(int), file3(float), file4(complex) and file5(bool) in my_project:

import torch

torch.save(obj=3, f="my_project/file2")
torch.save(obj=3.14, f="my_project/file3")
torch.save(obj=3.14+7.j, f="my_project/file4")
torch.save(obj=True, f="my_project/file5")

# my_project
#  |-file1
#  |-file2 <- Here
#  |-file3 <- Here
#  |-file4 <- Here
#  └-file5 <- Here
Enter fullscreen mode Exit fullscreen mode

load() can load an object as shown below:

*Memos:

  • load() can be used with torch but not with a tensor.
  • The 1st argument with torch is f(Required-Type:Union[str, PathLike, BinaryIO, IO[bytes]]).
  • The 2nd argument with torch is map_location(Optional-Default:None-Type:Optional[Union[Callable[Storage, str], Storage], device, str, Dict[str, str]]]).
  • The 3rd argument with torch is pickle_module(Optional-Default:pickle-Type:Any). *It must be None if weights_only is True but pickle is set to it implicitly.
  • There is weights_only argument with torch(Optional-Default:False-Type:Optional(bool)): *Memos:
    • weights_only= must be used.
    • Basically, True should be set to it. *A warning occurs if weights_only=False isn't explicitly set.
    • It will be True by default in the later version of PyTorch.
  • There is mmap argument with torch(Optional-Default:None-Type:Optional(bool)). *mmap= must be used.
  • There is pickle_load_args argument with torch(Optional-Type:Any): *Memos:
    • A keyword argument must be used: *Memos:
    • pickle_load_args= cannot be used.
    • errors= can be used.
    • It cannot be used if weights_only is True.
    • It's only for Python 3.
  • It can load a lot more types than I show below. *complex type can be loaded if weights_only is False.
  • Basically, it's used to save a model.

1. There are file1(str), file2(int), file3(float), file4(complex) and file5(bool) in my_project as saved above with save():

my_project
 |-file1
 |-file2
 |-file3
 |-file4
 └-file5
Enter fullscreen mode Exit fullscreen mode

2. Load file1(str) from my_project:

import torch
import pickle

torch.load(f="my_project/file1", weights_only=True)
# 'Hello World'

torch.load(f="my_project/file1", map_location=None, 
           pickle_module=None, weights_only=True,
           mmap=None)
# 'Hello World'

torch.load(f="my_project/file1", map_location=None, 
           pickle_module=pickle, weights_only=False,
           mmap=None, errors="There are errors")
# 'Hello World'
Enter fullscreen mode Exit fullscreen mode

3. Load file2(int), file3(float), file4(complex) and file5(bool) in my_project. *complex type can be loaded if weights_only is False:

import torch

torch.load(f="my_project/file2", weights_only=True)
# 3

torch.load(f="my_project/file3", weights_only=True)
# 3.14

torch.load(f="my_project/file4", weights_only=False)
# (3.14+7j)

torch.load(f="my_project/file5", weights_only=True)
# True
Enter fullscreen mode Exit fullscreen mode

Image of Docusign

Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more

Top comments (0)

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more