2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Dans PyTorch, vous pouvez enregistrer et charger le modèle et continuer la formation en suivant ces étapes :
Enregistrer le modèle
Il existe généralement deux manières d'enregistrer un modèle :
Enregistrez l'intégralité du modèle (y compris la structure du réseau, les poids, etc.) :
torch.save(model, 'model.pth')
Seul le state_dict du modèle (contenant uniquement les paramètres de poids) est enregistré. Cette méthode est recommandée car elle économise de l'espace de stockage et est plus flexible lors du chargement :
torch.save(model.state_dict(), 'model_weights.pth')
Charger le modèle
En conséquence, il existe deux manières de charger le modèle :
Si vous avez déjà enregistré l'intégralité du modèle, vous pouvez le charger directement de la manière suivante :
model = torch.load('model.pth')
Si vous avez uniquement enregistré state_dict auparavant, vous devez instancier un modèle avec la même structure que le modèle d'origine, puis transmettreload_state_dict()
Méthode pour charger des poids :
- # 实例化一个与原模型结构相同的模型
- model = YourModelClass()
-
- # 加载保存的state_dict
- model.load_state_dict(torch.load('model_weights.pth'))
-
- # 确保将模型转移到正确的设备上(例如GPU或CPU)
- device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
- model.to(device)
continuer la formation
Après avoir chargé le modèle, vous pouvez continuer la formation. Assurez-vous d'avoir défini la fonction de perte et l'optimiseur et que leurs états sont correctement chargés (si vous les avez enregistrés précédemment).Ensuite, suivez simplement le processus de formation normal
- # 定义损失函数和优化器
- criterion = nn.CrossEntropyLoss()
- optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
-
- # 如果之前保存了优化器状态,也可以加载
- optimizer.load_state_dict(torch.load('optimizer.pth'))
-
- # 开始训练
- for epoch in range(num_epochs):
- for inputs, labels in dataloader:
- inputs, labels = inputs.to(device), labels.to(device)
-
- optimizer.zero_grad()
- outputs = model(inputs)
- loss = criterion(outputs, labels)
- loss.backward()
- optimizer.step()
De cette façon, vous pouvez continuer à entraîner le modèle à partir de l'endroit où vous l'avez enregistré pour la dernière fois.