当前位置:网站首页>Exemple complet d'enregistrement du modèle pytoch + enregistrement du modèle pytoch seuls les paramètres d'entraînement sont - ils enregistrés? Oui (+ Solution)
Exemple complet d'enregistrement du modèle pytoch + enregistrement du modèle pytoch seuls les paramètres d'entraînement sont - ils enregistrés? Oui (+ Solution)
2022-07-02 19:55:00 【Fakeoccupational】
Le test utilise unliner model,Il y a d'autres questions.pytorch Enregistrer le modèle enregistrer seulement les paramètres d'entraînement?
saveModèle
# Importer des paquets
import glob
import os
import torch
import matplotlib.pyplot as plt
import random #Utilisé par l'Itérateur de données pour générer des données aléatoires
# Générer un ensemble de données x1Catégorie0,x2Catégorie1
n_data = torch.ones(50, 2) # Forme de base des données
x1 = torch.normal(2 * n_data, 1) # shape=(50, 2)
y1 = torch.zeros(50) # Type0 shape=(50, 1)
x2 = torch.normal(-2 * n_data, 1) # shape=(50, 2)
y2 = torch.ones(50) # Type1 shape=(50, 1)
# Attention! x, y Les données doivent être présentées sous la forme suivante(torch.catEst de fusionner les données)
x = torch.cat((x1, x2), 0).type(torch.FloatTensor) y = torch.cat((y1, y2), 0).type(torch.FloatTensor) # Visualisation des ensembles de données plt.scatter(x.data.numpy()[:, 0], x.data.numpy()[:, 1], c=y.data.numpy(), s=100, lw=0, cmap='RdYlGn') plt.show() # Lecture des données: def data_iter(batch_size, x, y): num_examples = len(x) indices = list(range(num_examples))
random.shuffle(indices) # L'ordre de lecture des échantillons est aléatoire
for i in range(0, num_examples, batch_size):
j = torch.LongTensor(indices[i: min(i + batch_size, num_examples)]) #Peut - être moins d'une dernière foisbatch
yield x.index_select(0, j), y.index_select(0, j)
#############################################################################################################
def saver(model_state_dict, optimizer_state_dict, model_path, epoch, max_to_save=30):
total_models = glob.glob(model_path + '*')
if len(total_models) >= max_to_save:
total_models.sort()
os.remove(total_models[0])
state_dict = {
}
state_dict["model_state_dict"] = model_state_dict
state_dict["optimizer_state_dict"] = optimizer_state_dict
torch.save(state_dict, model_path + 'h' + str(epoch))
print('models {} save successfully!'.format(model_path + 'hahaha' + str(epoch)))
################################################################################################################
import torch.nn as nn
import torch.optim as optim
class net(nn.Module):
def __init__(self, **kwargs):
super(net, self).__init__(**kwargs)
self.net = nn.Sequential(nn.Linear(2, 1), nn.ReLU())
def forward(self, x):
return self.net(x)
def loss(y_hat, y):
return (y_hat - y.view(y_hat.size())) ** 2 / 2
def accuracy(y_hat, y): #@save
"""Calculer la quantité correcte prévue."""
cmp = y_hat.type(y.dtype) > 0.5 # Plus grand que0.5Catégorie1
result=cmp.type(y.dtype)
acc = 1-float(((result-y).sum())/ len(y))
return acc;
lr = 0.03
num_epochs = 3 # Nombre d'Itérations
batch_size = 10 # Taille du lot
model = net()
params = list(model.parameters())
optimizer = torch.optim.Adam(params, 1e-4)
for epoch in range(num_epochs):
for X, y_train in data_iter(batch_size, x, y):
optimizer.zero_grad()
l = loss(model(X), y_train).sum() # l Il s'agit de petits lots XEtyPerte de
l.backward(retain_graph=True)
optimizer.step()
print(l)
saver(model.state_dict(), optimizer.state_dict(), "./", epoch + 1, max_to_save=100)
loadModèle
# Importer des paquets
import glob
import os
import torch
import matplotlib.pyplot as plt
import random #Utilisé par l'Itérateur de données pour générer des données aléatoires
# Générer un ensemble de données x1Catégorie0,x2Catégorie1
n_data = torch.ones(50, 2) # Forme de base des données
x1 = torch.normal(2 * n_data, 1) # shape=(50, 2)
y1 = torch.zeros(50) # Type0 shape=(50, 1)
x2 = torch.normal(-2 * n_data, 1) # shape=(50, 2)
y2 = torch.ones(50) # Type1 shape=(50, 1)
# Attention! x, y Les données doivent être présentées sous la forme suivante(torch.catEst de fusionner les données)
x = torch.cat((x1, x2), 0).type(torch.FloatTensor) y = torch.cat((y1, y2), 0).type(torch.FloatTensor) # Visualisation des ensembles de données plt.scatter(x.data.numpy()[:, 0], x.data.numpy()[:, 1], c=y.data.numpy(), s=100, lw=0, cmap='RdYlGn') plt.show() # Lecture des données: def data_iter(batch_size, x, y): num_examples = len(x) indices = list(range(num_examples))
random.shuffle(indices) # L'ordre de lecture des échantillons est aléatoire
for i in range(0, num_examples, batch_size):
j = torch.LongTensor(indices[i: min(i + batch_size, num_examples)]) #Peut - être moins d'une dernière foisbatch
yield x.index_select(0, j), y.index_select(0, j)
#############################################################################################################
def saver(model_state_dict, optimizer_state_dict, model_path, epoch, max_to_save=30):
total_models = glob.glob(model_path + '*')
if len(total_models) >= max_to_save:
total_models.sort()
os.remove(total_models[0])
state_dict = {
}
state_dict["model_state_dict"] = model_state_dict
state_dict["optimizer_state_dict"] = optimizer_state_dict
torch.save(state_dict, model_path + 'h' + str(epoch))
print('models {} save successfully!'.format(model_path + 'hahaha' + str(epoch)))
################################################################################################################
import torch.nn as nn
import torch.optim as optim
class net(nn.Module):
def __init__(self, **kwargs):
super(net, self).__init__(**kwargs)
self.net = nn.Sequential(nn.Linear(2, 1), nn.ReLU())
def forward(self, x):
return self.net(x)
def loss(y_hat, y):
return (y_hat - y.view(y_hat.size())) ** 2 / 2
def accuracy(y_hat, y): #@save
"""Calculer la quantité correcte prévue."""
cmp = y_hat.type(y.dtype) > 0.5 # Plus grand que0.5Catégorie1
result=cmp.type(y.dtype)
acc = 1-float(((result-y).sum())/ len(y))
return acc;
lr = 0.03
num_epochs = 3 # Nombre d'Itérations
batch_size = 10 # Taille du lot
model = net()
params = list(model.parameters())
optimizer = torch.optim.Adam(params, 1e-4)
# for epoch in range(num_epochs):
# for X, y_train in data_iter(batch_size, x, y):
# optimizer.zero_grad()
# l = loss(model(X), y_train).sum() # l Il s'agit de petits lots XEtyPerte de
# l.backward(retain_graph=True)
# optimizer.step()
# print(l)
# saver(model.state_dict(), optimizer.state_dict(), "./", epoch + 1, max_to_save=100)
def loader(model_path):
state_dict = torch.load(model_path)
model_state_dict = state_dict["model_state_dict"]
optimizer_state_dict = state_dict["optimizer_state_dict"]
return model_state_dict, optimizer_state_dict
model_state_dict, optimizer_state_dict = loader("h1")
model.load_state_dict(model_state_dict)
optimizer.load_state_dict(optimizer_state_dict)
print('pretrained models loaded!')
pytorch Enregistrer le modèle enregistrer seulement les paramètres d'entraînement?- Oui.
class net(nn.Module):
def __init__(self, **kwargs):
super(net, self).__init__(**kwargs)
self.net = nn.Sequential(nn.Linear(2, 1), nn.ReLU())
self.notrain= torch.rand((64, 64), dtype=torch.float)
def forward(self, x):
return self.net(x)
Solutions
class net(nn.Module):
def __init__(self, **kwargs):
super(net, self).__init__(**kwargs)
self.net = nn.Sequential(nn.Linear(2, 1), nn.ReLU())
# self.notrain = torch.rand((64, 64), dtype=torch.float)
self.notrain = torch.nn.Parameter(torch.ones(64, 64))
def forward(self, x):
return self.net(x)
for epoch in range(num_epochs):
for X, y_train in data_iter(batch_size, x, y):
optimizer.zero_grad()
l = loss(model(X), y_train).sum() # l Il s'agit de petits lots XEtyPerte de
l.backward(retain_graph=True)
optimizer.step()
print(l)
model.notrain.data = model.notrain.data+2
saver(model.state_dict(), optimizer.state_dict(), "./", epoch + 1, max_to_save=100)
Référence et plus
PyTorch DataLoaderDebug :Aléatoiremask Ou une sélection aléatoire des données bug
边栏推荐
- Notes on hardware design of kt148a voice chip IC
- B端电商-订单逆向流程
- 字典
- [NLP] a detailed generative text Abstract classic paper pointer generator
- 【Hot100】22. bracket-generating
- AcWing 1131. 拯救大兵瑞恩 题解(最短路)
- 外包干了三年,废了...
- Common problems and description of kt148a voice chip IC development
- Cuckoo filter
- [JS] get the search parameters of URL in hash mode
猜你喜欢
自動生成VGG圖像注釋文件
burp 安装 license key not recognized
Motivation! Big Liangshan boy a remporté le prix Zhibo! Un article de remerciement pour les internautes qui pleurent
自动生成VGG图像注释文件
AcWing 1126. Minimum cost solution (shortest path Dijkstra)
upload-labs
JASMINER X4 1U深度拆解,揭开高效省电背后的秘密
API文档工具knife4j使用详解
疫情封控65天,我的居家办公心得分享 | 社区征文
Istio1.12: installation and quick start
随机推荐
《MongoDB入门教程》第03篇 MongoDB基本概念
JS how to get integer
What is the Bluetooth chip ble, how to select it, and what is the path of subsequent technology development
AcWing 903. Expensive bride price solution (the shortest path - building map, Dijkstra)
Automated video production
AcWing 181. Turnaround game solution (search ida* search)
Implementation of online shopping mall system based on SSM
Correspondence between pytoch version, CUDA version and graphics card driver version
for(auto a : b)和for(auto &a : b)用法
Is there any security guarantee for the ranking of stock and securities companies
【Hot100】21. 合并两个有序链表
KT148A语音芯片ic的硬件设计注意事项
VBScript详解(一)
励志!大凉山小伙全奖直博!论文致谢看哭网友
Implementation of 452 strcpy, strcat, StrCmp, strstr, strchr
Detailed tutorial on installing stand-alone redis
【实习】解决请求参数过长问题
Common problems and description of kt148a voice chip IC development
[ERP software] what are the dangers of the secondary development of ERP system?
How to set priorities in C language? Elaborate on C language priorities