pytorch的python API略读--序列化和反序列化

作者:机器视觉全栈er
网站:cvtutorials.com

2.2 序列化和反序列化

序列化是将某个对象的信息转化成可以存储或者传输的信息的过程,反序列化是和序列化相反的过程。

torch.save: 序列化的用法如下:

torch.save(obj, f, pickle_module=pickle, pickle_protocol=DEFAULT_PROTOCOL, _use_new_zipfile_serialization=True)

举个简单的例子:

>>> import torch
>>> cvtutorials = torch.randn([2, 3])
>>> cvtutorials
tensor([[-1.8449,  1.7814, -0.5579],
        [-0.5615, -0.2925, -0.0764]])
>>> torch.save(cvtutorials, "cvtutorials.pt")

torch.load: 反序列化的用法如下:

torch.load(f, map_location=None, pickle_module=pickle, **pickle_load_args)

举个简单的例子:

>>> cvtutorials_1 = torch.load("cvtutorials.pt", map_location=torch.device("cpu"))
>>> cvtutorials_1
tensor([[-1.8449,  1.7814, -0.5579],
        [-0.5615, -0.2925, -0.0764]])
>>> cvtutorials_1.is_cuda
False

这里要注意,上面的函数将所有的tensor放到cpu上的,如果要特别指定放到GPU上,需要设置为GPU,举例如下:

>>> cvtutorials_2 = torch.load("cvtutorials.pt", map_location=lambda storage, loc: storage.cuda(1))
>>> cvtutorials_2
tensor([[-1.8449,  1.7814, -0.5579],
        [-0.5615, -0.2925, -0.0764]], device='cuda:1')
>>> cvtutorials_2.is_cuda
True

我将tensor载入到GPU上时,速度明显变慢了,有一个从CPU迁移到GPU的过程。

你可能感兴趣的:(pytorch的python,API,pytorch)