You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch中ResNet18模型预测输出维度及含义咨询

PyTorch官方ResNet18输出形状[64, 1000]的原因及数值含义

形状产生原因

  • PyTorch官方实现的ResNet系列模型默认适配ImageNet 1k数据集,该数据集共包含1000个分类类别,因此模型最后一层全连接层的输出维度固定为1000。
  • 你设置的batch size为64,输出张量的第一维度对应批大小,因此最终得到[64, 1000]的输出结果。
  • 你观察到的和TensorFlow的输出差异属于框架默认实现的细节区别:部分TensorFlow的ResNet实现会默认适配自定义数据集的类别数调整输出维度,但PyTorch官方实现不会自动修改全连接层参数,需要你手动调整适配你的数据集。

如果你的训练数据集类别数不是1000,可以用如下代码修改ResNet18的最后一层:

import torch
import torchvision.models as models
resnet18 = models.resnet18(pretrained=False)
# 替换N为你的数据集实际分类数
num_ftrs = resnet18.fc.in_features
resnet18.fc = torch.nn.Linear(num_ftrs, N)

1000个数值的含义

  • 每个样本对应的1000个数值是该样本在ImageNet 1k的1000个分类上的未归一化对数概率(logits),不是归一化后的概率值。
  • 你使用的CrossEntropyLoss()内部已经集成了Softmax计算逻辑,所以训练阶段不需要额外对输出做归一化处理。
  • 计算准确率时取argmax是为了获得logits最大值对应的类别索引,也就是模型的预测分类结果,该操作和框架无关,多分类任务下只要输出是logits或者概率分布,都需要通过argmax得到预测标签。

内容的提问来源于stack exchange,提问作者user16573587

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 06:27:04