[Einführung in die künstliche Intelligenz] Speichern und Lesen neuronaler Netzwerkmodelle

[Einführung in die künstliche Intelligenz] Speichern und Lesen neuronaler Netzwerkmodelle


I. Einleitung

  • Nachdem Sie das neuronale Netzwerkmodell erstellt und trainiert haben, können Sie das Modell und die entsprechenden Parameter für spätere Aufrufe speichern.
  • PyTorch bietet zwei Sätze von Lese- und Schreibmethoden. Methode 1: Speichern Sie sowohl die Modellstruktur als auch die Parameter und Methode 2: Speichern Sie nur die Parameter.
  • Auch der Zeitpunkt der Speicherung des Modells ist ein Punkt, der berücksichtigt werden kann.

2. Modellstruktur und Parameter gleichzeitig speichern

  • Nehmen Sie als Beispiel das von Torchvision bereitgestellte vgg16-Modell.
  • Modell speichern:
import torch
import torchvision

vgg16 = torchvision.models.vgg16(pretrained=False)

# 不仅保存网络模型,也保存网络模型中的相关参数
torch.save(vgg16, "vgg16_model1.pth")
  • Laden des Modells:
import torch
import torchvision

model = torch.load("vgg16_model1.pth")
print(model) # 查看模型结构

3. Speichern Sie nur Modellparameter

  • Nehmen wir immer noch das von Torchvision bereitgestellte vgg16-Modell als Beispiel.
  • Modell speichern:
import torch
import torchvision

vgg16 = torchvision.models.vgg16(pretrained=False)

# 只保存模型的参数,占用空间更小,官方推荐
torch.save(vgg16.state_dict(), "vgg16_model2.pth")
  • Laden des Modells:
import torch
import torchvision

# 相较于第一种方法,该方法在加载时需把模型构建起来。
model = torchvision.models.vgg16(pretrained=False)
model.load_state_dict(torch.load("vgg16_model2.pth"))
print(model)

4. Zeitpunkt des Sparens – Rundensparen und bestes Sparen

  • Sie können 轮次保存und verwenden 最佳保存und den entsprechenden Logikcode hinzufügen, um dies zu erreichen.

4.1 Rundensparen

  • Wenn Sie alle paar Runden einmal speichern, können mehrere Sätze historischer Parameterinformationen abgerufen werden.
  • Dies hat den Vorteil, dass Sie im Falle einer Überanpassung weiterhin vergangene Parameter verwenden können.
if (epoch + 1) % save_period == 0 or epoch + 1 == Epoch:
    #保存代码

4.2 Bestes Speichern

  • Der Trainingseffekt schwankt in verschiedenen Runden. Dadurch können die Parameterdaten mit der besten Leistung ohne Überanpassung erhalten werden.
if len(loss_history.val_loss) <= 1 or (val_loss / epoch_step_val) <= min(loss_history.val_loss):
    #保存代码

Supongo que te gusta

Origin blog.csdn.net/qq_44928822/article/details/130262673
Recomendado
Clasificación