resnet从单分类到多分类变更

从二分类改为单层多分类

  1. 数据集格式(当时我是为了做颜色多分类模型)

Mydata

      ---- images

               -------red

               -------yellow

               -------blue

               -------black

               ……

  1. 训练报错:

/opt/conda/conda-bld/pytorch_1623448278899/work/aten/src/THCUNN/ClassNLLCriterion.cu:108: cunn_ClassNLLCriterion_updateOutput_kernel: block: [0,0,0], thread: [31,0,0] Assertion `t >= 0 && t < n_classes` failed.

CUDA error: CUBLAS_STATUS_ALLOC_FAILED when calling `cublasCreate(handle)`

搜了具体是因为classes数量不一致报错

尝试修改resnet传参,依然报错

修改resnet类中文件,修改最后一层输出层为3,依然报错

深度学习-通过Resnet18实现CIFAR10数据分类_将cifar-10分割的小型数据集_机智的程序DOG的博客-CSDN博客

对着此文档从头到尾来做

最后修改网络模型的最后一层输出数字为9

(有多少个类就要改成多少)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
当使用ResNet-18进行多分类任务时,我们需要对网络的最后一层进行修改,以适应分类的类别数量。以下是一个示例代码,展示了如何使用PyTorch实现ResNet-18的多分类输出: ```python import torch import torch.nn as nn import torchvision.models as models # 加载预训练的ResNet-18模型 resnet = models.resnet18(pretrained=True) # 冻结所有参数 for param in resnet.parameters(): param.requires_grad = False # 获取ResNet-18的最后一层输入特征数量 num_features = resnet.fc.in_features # 替换最后一层全连接层 resnet.fc = nn.Linear(num_features, num_classes) # 将模型设置为训练模式 resnet.train() # 定义损失函数和优化器 criterion = nn.CrossEntropyLoss() optimizer = torch.optim.SGD(resnet.parameters(), lr=0.001, momentum=0.9) # 训练过程 for epoch in range(num_epochs): # 前向传播 outputs = resnet(inputs) loss = criterion(outputs, labels) # 反向传播和优化 optimizer.zero_grad() loss.backward() optimizer.step() # 打印训练信息 if (epoch+1) % 10 == 0: print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item()}') # 测试过程 resnet.eval() with torch.no_grad(): outputs = resnet(test_inputs) _, predicted = torch.max(outputs.data, 1) accuracy = (predicted == test_labels).sum().item() / len(test_labels) print(f'Test Accuracy: {accuracy}') ``` 在上述代码中,我们首先加载预训练的ResNet-18模型,并冻结所有参数。然后,我们通过替换最后一层全连接层来适应多分类任务的类别数量。接下来,我们定义损失函数和优化器,并进行训练和测试过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

科萨福科

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

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

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

打赏作者

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

抵扣说明:

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

余额充值