Pytorch查看、初始化网络层参数及模型的保存与加载

1 顺序块

在这里插入图片描述

2 查看网络层参数

2.1 查看单层网络结果

在这里插入图片描述

2.2 查看所有层网络参数

在这里插入图片描述

3 初始化网络层参数

在这里插入图片描述

4 模型的保存与加载

4.1 torch.save(),torch.load()

在这里插入图片描述

保存时候:用torch.save(A, “B”) A为实例化的模型,B为保存的名称,保存的是整个模型和参数
加载时候:得找个东西接盘才可以,所以用 C = torch.load(“B”) B为名称,C为加载后所赋值的模型

4.2 state_dict(),load_state_dict()

在这里插入图片描述

保存时候:用torch.load(A.state_dict(), “B”) 保存的是参数,所以A为对象,将参数进行保存,B为保存的名称
加载时候:用C.load_state_dict(“B”) 因为只有参数,所以需要用一个和保存参数的网络结构相同的对象去加载,否则参数不知道给那一层进行赋值,所以这里的A和C有着相同的网络结构

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是使用 PyTorch 搭建 LSTM 网络模型的基本步骤: 1. 导入必要的库: ```python import torch import torch.nn as nn ``` 2. 定义 LSTM 模型类: ```python class LSTMModel(nn.Module): def __init__(self, input_dim, hidden_dim, layer_dim, output_dim): super(LSTMModel, self).__init__() # 定义 LSTM 层 self.lstm = nn.LSTM(input_dim, hidden_dim, layer_dim, batch_first=True) # 定义全连接层 self.fc = nn.Linear(hidden_dim, output_dim) def forward(self, x): # 初始化 LSTM 隐藏层状态 h0 = torch.zeros(self.layer_dim, x.size(0), self.hidden_dim).requires_grad_() c0 = torch.zeros(self.layer_dim, x.size(0), self.hidden_dim).requires_grad_() # 前向传播 out, (_, _) = self.lstm(x, (h0.detach(), c0.detach())) out = self.fc(out[:, -1, :]) return out ``` 在上面的代码中,我们定义了一个名为 `LSTMModel` 的类,该类继承自 `nn.Module`。该类包含一个 LSTM 层和一个全连接层。在类的构造函数中,我们首先调用父类构造函数,并传递必要的参数。然后,我们定义了 LSTM 层和全连接层。在 `forward()` 方法中,我们首先初始化 LSTM 隐藏层状态,然后进行前向传播,并将最后一个时序输出传递给全连接层,最后返回输出结果。 3. 实例化模型: ```python input_dim = 28 hidden_dim = 100 layer_dim = 1 output_dim = 10 model = LSTMModel(input_dim, hidden_dim, layer_dim, output_dim) ``` 在这个例子中,我们实例化了一个 `LSTMModel` 类的对象,并传递必要的参数。 4. 定义损失函数和优化器: ```python criterion = nn.CrossEntropyLoss() learning_rate = 0.1 optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate) ``` 在这个例子中,我们使用交叉熵损失函数和随机梯度下降(SGD)优化器。你可以根据你的实际需求选择其他的损失函数和优化器。 5. 训练模型: ```python num_epochs = 10 for epoch in range(num_epochs): for i, (images, labels) in enumerate(train_loader): # 前向传播 outputs = model(images.view(-1, sequence_dim, input_dim)) loss = criterion(outputs, labels) # 反向传播和优化 optimizer.zero_grad() loss.backward() optimizer.step() if (i+1) % 100 == 0: print('Epoch [{}/{}], Step [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, i+1, total_step, loss.item())) ``` 在这个例子中,我们进行了 10 轮训练,每轮训练中,我们使用数据器从训练集中获取一批数据,进行前向传播和反向传播,并使用优化器更新模型参数。在每个 epoch 中,我们打印出当前的损失值。 6. 在测试集上评估模型: ```python with torch.no_grad(): correct = 0 total = 0 for images, labels in test_loader: outputs = model(images.view(-1, sequence_dim, input_dim)) _, predicted = torch.max(outputs.data, 1) total += labels.size(0) correct += (predicted == labels).sum().item() print('Test Accuracy of the model on the 10000 test images: {} %'.format(100 * correct / total)) ``` 在这个例子中,我们使用测试数据集对模型进行评估,并计算准确率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Philo`

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值