这段代码涉及了使用 PyTorch 进行深度学习任务的一些基本操作。以下是对每一行代码的逐句详细分析:

  1. import torch: 导入 PyTorch 库。

  2. import torch.nn as nn: 导入 PyTorch 中的神经网络模块。

  3. import torch.optim as optim: 导入 PyTorch 中的优化器模块。

  4. from torch.utils.data import DataLoader: 从 PyTorch 中的数据加载器模块导入 DataLoader,用于加载和处理数据集。

  5. import videos: 导入自定义的 videos 模块。

  6. from c3d import C3D: 从自定义的 c3d 模块导入 C3D 模型。

  7. from hmdb51 import HMDB51: 从自定义的 hmdb51 模块导入 HMDB51 数据集。

  8. batch_size = 4: 设置每个训练批次的样本数量为 4。

  9. lr = 1e-3: 设置学习率为 0.001。

  10. num_epochs = 10: 设置训练的总轮数为 10。

  11. train_dataset = HMDB51('train', videos): 创建一个 HMDB51 数据集的实例,使用 'train' 作为训练集,并传入自定义的 videos 对象。

  12. train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True): 创建一个训练数据加载器,将训练数据集传入 DataLoader,并指定批次大小和数据混洗。

  13. model = C3D(num_classes=51): 创建一个 C3D 模型的实例,其中 num_classes 参数设置为 51。

  14. model.load_state_dict(torch.load('c3d_hmdb51.pt')): 从文件中加载预训练的 C3D 模型权重。

20-21. model.fc6 = nn.Linear(4096, 512)model.fc7 = nn.Linear(512, 51): 更改 C3D 模型的最后两层全连接层,将输出维度调整为适应 HMDB51 数据集的类别数。

  1. model.train(): 设置模型为训练模式,这将启用模型中的 Dropout 等训练相关的操作。

  2. optimizer = optim.Adam(model.parameters(), lr=lr): 创建一个 Adam 优化器,传入 C3D 模型的参数和设定的学习率。

  3. criterion = nn.CrossEntropyLoss(): 创建一个交叉熵损失函数,用于计算模型输出和真实标签之间的损失。

29-30. for epoch in range(num_epochs):for i, (inputs, labels) in enumerate(train_loader):: 迭代训练数据集中的所有批次和样本。

  1. inputs = inputs.cuda(): 将输入张量移至 GPU 上进行加速计算。

  2. labels = labels.cuda(): 将标签张量移至 GPU 上进行加速计算。

  3. optimizer.zero_grad(): 清空优化器中之前的梯度信息。

  4. outputs = model(inputs): 通过 C3D 模型对输入进行前向传播,得到预测输出。

  5. loss = criterion(outputs, labels): 计算预测输出和真实标签之间的损失。

  6. loss.backward(): 反向传播计算梯度。

  7. optimizer.step(): 根据梯度更新模型的参数。

  8. running_loss += loss.item(): 累加当前批次的损失值。

  9. print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch + 1, num_epochs, running_loss / len(train_loader))): 打印每个轮次的平均损失值。

以上是对所给代码的逐句详细分析。这段代码的主要功能是使用 C3D 模型对 HMDB51 数据集进行训练,并输出每个轮次的平均损失值。

PyTorch 深度学习实战:C3D 模型训练 HMDB51 数据集

原文地址: http://www.cveoy.top/t/topic/nOh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录