分类网络预测结果代码解析

分类网络到底预测了什么

以前没搞懂分类网络中,一张图片经过了神经网络后怎么就变成图片类别的,现在研究出了一点自己的体会,分享给大家,纯属原创。

分类网络基本套路代码

outputs = net(inputs)
        loss = criterion(outputs, targets)
        # loss is variable , if add it(+=loss) directly, there will be a bigger ang bigger graph.
        test_loss += loss.item()
        _, predicted = torch.max(outputs.data, 1)
        total += targets.size(0)
        correct+=predicted.eq(targets.data).cpu().sum()
        

这里的net是分类网络,有很多种,当我们把一张图片归一化后输入到网络中,这张图片就开始被各钟各样的卷积核给卷积,卷积的操作我就不在这解释了。
torch.Size([100, 3, 32, 32])
torch.Size([100, 128])
torch.Size([100, 10])
tensor(-2.2718, device=‘cuda:0’, grad_fn=)
原本输入了100张图片的数据,每张图片都是彩色(3表示彩色)每张图片都是32×32的大小,输入到网络中经过卷积层卷积,变成了一个个的矩阵,矩阵维度是四维。
再经过连接层后变成了二维矩阵,也就是上面的最后一个torch size,100是100张图片,10是连接层中最后一层的输出通道,这个输出通道自己根据要判断的图片类别而设置,每个通道能经过加权求和得到一个数字,这里也就是得到10个数字。
到此,原本的一张彩色图片,经过网络后变成了10个数字(设置图片类别数是10),这10个数字代表对应类别的概率,比如一张图片它是0类别(用0到9的数字分别表示10类)那么在10个通道中的第一个通道就是判断为0类别的概率。
我们只需用torch.max这个代码就能得到一张图片输出后的10个数字中,哪个数字最大,那个最大的数字代表的通道就是预测的类别,比如第一个通道的数字最大,那么就对应0类别。

到此就实现了网络预测图片是哪一类别了,当然准不准要另说。

学生党一枚,如有不对的地方请给我留言,谢谢!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是一个基于神经网络分类Matlab代码解析: ```matlab % 加载数据集 load iris_dataset.mat % 加载鸢尾花数据集 x = irisInputs'; % 输入数据 t = irisTargets'; % 标签数据 % 设置神经网络参数 hiddenLayerSize = 10; % 隐藏层神经元个数 net = patternnet(hiddenLayerSize); % 创建神经网络模型 net.divideParam.trainRatio = 70/100; % 训练集比例 net.divideParam.valRatio = 15/100; % 验证集比例 net.divideParam.testRatio = 15/100; % 测试集比例 % 训练神经网络 [net, tr] = train(net, x, t); % 测试神经网络 test_x = x(:, tr.testInd); % 测试数据 test_t = t(:, tr.testInd); % 测试标签 test_y = net(test_x); % 预测结果 % 计算分类准确率 test_class = vec2ind(test_y); % 将预测结果转换为类别 test_class_true = vec2ind(test_t); % 将真实标签转换为类别 acc = sum(test_class == test_class_true) / length(test_class); fprintf('Classification accuracy: %.2f%%\n', acc * 100); ``` 首先,代码加载了一个鸢尾花数据集,并将输入数据和标签数据分别存储在`x`和`t`中。 接着,代码设置了神经网络的参数,其中`hiddenLayerSize`表示隐藏层神经元的个数,`patternnet`函数创建了一个pattern recognition神经网络模型,`divideParam`设置了训练集、验证集和测试集的比例。 然后,代码使用`train`函数对神经网络进行训练,并返回训练好的神经网络模型`net`和训练信息`tr`。 接下来,代码使用测试数据`test_x`和测试标签`test_t`对训练好的神经网络模型进行测试,得到预测结果`test_y`。 最后,代码预测结果`test_y`和真实标签`test_t`分别转换为类别,并计算分类准确率`acc`。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值