深度学习CNN中Lenet和优化器

有没有什么预训练的lenet模型
我目前代码如下

class LeNet(nn.Module):
    def __init__(self):
        super().__init__()
        # 3 input image channel, 6 output channels, 5x5 square convolution
        self.conv1 = torch.nn.Conv2d(3, 6, kernel_size = 5, padding = 2)
        self.conv2 = torch.nn.Conv2d(6, 16, kernel_size = 5)
        self.conv3 = torch.nn.Conv2d(16, 32, kernel_size = 5)
        self.pool = nn.MaxPool2d(kernel_size = 2, stride = 2)
        self.dropout = nn.Dropout(p=0.1)
        self.fc1 = torch.nn.Linear(32*13*13, 120)      
        self.fc2 = torch.nn.Linear(120, 84)
        self.fc3 = torch.nn.Linear(84, 2)
  def forward(self, x):
        x = self.pool(F.relu(self.conv1(x)))
        x = self.pool(F.relu(self.conv2(x)))
        x = self.pool(F.relu(self.conv3(x)))
        x = torch.reshape(x, (x.size()[0], -1))
        x = self.dropout(x)
        x = F.relu(self.fc1(x))
        x = self.dropout(x)
        x = F.relu(self.fc2(x))
        x = self.fc3(x)
        
        return x

优化使用的是SGD
不知道有没有什么简单清晰的方法提高正确率
目前是91左右,希望能上93

补充:训练集不大 只有5w张图


import torch
import torchvision.models as models

# 加载预训练的LeNet模型
model = models.lenet(pretrained=True)

# 将最后一层的输出改为2(因为你的任务是二分类)
model.classifier[-1] = torch.nn.Linear(84, 2)

# 将模型转移到GPU上
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = model.to(device)

# 你的优化器和损失函数等不变
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
criterion = torch.nn.CrossEntropyLoss()

另外,你可以尝试以下方法来提高模型的准确率:

增加训练数据。如果你的训练数据集不够大,可以使用数据增强技术来生成更多的训练样本。

调整学习率。你可以尝试减小学习率,以避免模型在训练时过早收敛或者过拟合。

调整模型结构。可以尝试增加或减少卷积层、全连接层的数量,或者调整它们的大小。

使用正则化技术。例如dropout和L2正则化等可以有效减少过拟合问题。

尝试使用其他的优化器,例如Adam或Adagrad等,它们可能会比SGD更好地适应你的模型。

进行模型融合。如果你有多个模型,可以将它们的预测结果进行融合,以提高整体的准确率。

chatGPT回答的

  1. 数据增强:对训练图像应用各种变换(例如旋转、翻转、缩放和裁剪)来增强数据集。这有助于增加训练数据的多样性并提高模型泛化到新图像的能力。
  2. 学习率调度:学习率调度器在训练期间调整学习率。这有助于提高模型的收敛性和泛化性。
  3. 正则化:除了模型中已经存在的 dropout 层之外,您还可以尝试添加更多正则化技术,例如权重衰减或批量归一化。这有助于减少过度拟合并提高模型的泛化性能。
  4. 架构修改:通过添加更多层、增加卷积层中过滤器的数量或更改全连接层的大小来修改模型的架构。但是,请注意不要过度拟合训练数据或过度增加模型的复杂性。
  5. 超参数调整:使用网格搜索或随机搜索等技术调整模型的超参数,例如学习率、批量大小、周期数等。这有助于找到在验证集上产生最佳性能的超参数的最佳组合。

你可以在以上方法中选择一项或者多项来改变一下