动手学深度学习——读取和存储

"""读写TENSOR"""
#我们可以直接使用save函数和load函数分别存储和读取Tensor。
#save函数使用Python的pickle实用程序将对象进行序列化,然后将序列化对象保存在disk,使用save可以保存各种对象,包括模型、张量和字典等。
#load函数使用pickle unpickle工具将pickle的对象文件反序列化为内存。
import torch
from pyexpat import model
from torch import nn
#创建tensor变量x,并将其存在文件名同为下x.pt的文件里。
x=torch.ones(3)
torch.save(x,'x.pt')
#然后将数据从存储的文件读回内存
x2=torch.load('x.pt')
print(x2)
#存储一个tensor列表并读回内存
y=torch.zeros(4)
torch.save([x,y],'xy.pt')
xy_list=torch.load('xy.pt')
print(xy_list)
#存储并读取一个从字符串映射到tensor的字典
torch.save({'x':x,'y':y},'xy_dict.pt')
xy=torch.load('xy_dict.pt')
print(xy)

输出:

动手学深度学习——读取和存储_第1张图片

"""读写模型"""
class MLP(nn.Module):
    def __init__(self):
        super(MLP, self).__init__()
        self.hidden=nn.Linear(3,2)
        self.act=nn.ReLU()
        self.output=nn.Linear(2,1)

    def forward(self,x):
        a=self.act(self.hidden(x))
        return self.output(a)
net=MLP()
print(net.state_dict())
#只有具有可以学习的参数的层(卷积层、线性层等)才有state_dict中的条目。优化器(optim)也有一个state_dict,其中包含关于优化器状态以及使用的超参数的信息。
optimizer=torch.optim.SGD(net.parameters(),lr=0.01,momentum=0.9)
print(optimizer.state_dict())

 输出:

"""保存和加载模型
#保存和加载state_dict(推荐方式)
torch.save(model.state_dict(),PATH)
#加载
model=TheModelClass(*args,**kwargs)
model.load_state_dict(torch.load(PATH))"""
X=torch.randn(2,3)
Y=net(X)
PATH="./net.pt"
torch.save(net.state_dict(),PATH)
net2=MLP()
net2.load_state_dict(torch.load(PATH))
Y2=net2(x)
Y2==Y
print(Y2)

 输出:

动手学深度学习——读取和存储_第2张图片

 

你可能感兴趣的:(动手学深度学习,深度学习,python,人工智能,pytorch)