我有四个文件夹分别放着四个不同class的data。
比方说: 飞机, 船, 汽车, 电视。
我要怎么用pytorch或tensorflow从一个看似多分类的问题变成一个回归问题(regression)。
原本可能是input图片output class的名字,现在变成input一张图片 output一个0~1范围的数字代表不同
class。
总之就是多分类问题转成回归(regression)问题,该怎么做?
最后要与也要输出confusion matrix。
分类问题转换成回归问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
11条回答 默认 最新
- 守时间的孤岛 2023-04-18 15:43关注
该回答引用chatgpt:
将多分类问题转换成回归问题的思路是使用一个输出节点来表示目标值(即0~1范围的数字),这个输出节点的值代表每个类别的概率分数,最后选择分数最高的类别作为预测结果。具体实现方法如下:
定义模型结构
使用卷积神经网络(CNN)作为模型结构,并将最后一层全连接层的输出节点数设置为1。import torch.nn as nn class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(3, 32, 3, padding=1) self.conv2 = nn.Conv2d(32, 64, 3, padding=1) self.pool = nn.MaxPool2d(2, 2) self.fc1 = nn.Linear(64 * 8 * 8, 512) self.fc2 = nn.Linear(512, 1) def forward(self, x): x = self.pool(F.relu(self.conv1(x))) x = self.pool(F.relu(self.conv2(x))) x = x.view(-1, 64 * 8 * 8) x = F.relu(self.fc1(x)) x = torch.sigmoid(self.fc2(x)) return x
2定义损失函数
使用均方误差(MSE)作为损失函数,目标值为0或1的概率分数criterion = nn.MSELoss()
3定义优化器
使用随机梯度下降(SGD)优化器,并设置学习率和动量import torch.optim as optim optimizer = optim.SGD(net.parameters(), lr=0.01, momentum=0.9)
4加载数据集
使用PyTorch的torchvision模块加载数据集。import torchvision.datasets as datasets import torchvision.transforms as transforms train_data = datasets.ImageFolder('path/to/train/data', transform=transforms.ToTensor()) test_data = datasets.ImageFolder('path/to/test/data', transform=transforms.ToTensor())
5训练模型
使用PyTorch的torch.utils.data.DataLoader模块加载数据,定义训练循环,更新模型参数。train_loader = torch.utils.data.DataLoader(train_data, batch_size=32, shuffle=True) test_loader = torch.utils.data.DataLoader(test_data, batch_size=32, shuffle=False) num_epochs = 10 for epoch in range(num_epochs): running_loss = 0.0 for i, data in enumerate(train_loader, 0): inputs, labels = data optimizer.zero_grad() outputs = net(inputs) loss = criterion(outputs, labels.float()) loss.backward() optimizer.step() running_loss += loss.item() print('[%d, %5d] loss: %.3f' % (epoch + 1, i + 1, running_loss / len(train_loader))) print('Finished Training')
6评估模型
使用测试集评估模型的性能,并输出分类准确率correct = 0 total = 0 with torch.no_grad
解决 无用评论 打赏 举报
悬赏问题
- ¥15 CCF-CSP 2023 第三题 解压缩(50%)
- ¥30 comfyui openpose报错
- ¥20 Wpf Datarid单元格闪烁效果的实现
- ¥15 图像分割、图像边缘提取
- ¥15 sqlserver执行存储过程报错
- ¥100 nuxt、uniapp、ruoyi-vue 相关发布问题
- ¥15 浮窗和全屏应用同时存在,全屏应用输入法无法弹出
- ¥100 matlab2009 32位一直初始化
- ¥15 Expected type 'str | PathLike[str]…… bytes' instead
- ¥15 三极管电路求解,已知电阻电压和三级关放大倍数