蛋仔派对家电区玩法全解
2026-07-29 3433406
2026-07-29 0
上一篇里,我已经交出了卷面分——1000 个数字全部算完。

也许有人要问:解读输出不就是取最大值吗?为什么还得单独写一篇?
因为两者的逻辑方向不同。
第二篇说的是我的体内:口粮怎样经过楼层、分数如何累积,以及权重如何养成。
第三篇关注出口流水线:分数交付之后,人类如何读取、验收,又该怎样避免期待错位。
体内部分归我负责;出口翻译则大多属于饲养员、部署脚本和下游同事的工作。
若把两部分混写,很容易让人误以为模型输出结束时,就已经说出了猫——这才是真正的误解。
因此本文很短,但篇幅虽短,方向必须讲对。
三篇一路讲下来,契约其实始终未变:
| 环节 | 我交出什么 |
|---|---|
| 入口 | 吃合规张量(口粮) |
| 体内 | 计算出 1000 个分数 |
| 出口 | ……分数不会自行变成汉字 |
我返回的是 1000 个数字,也就是尚未贴上类名的卷面分。
人类听到的这是一只猫,是有人拿分数表完成翻译后的结果。
没错,我之前说自己做的是选择题,可我并非只圈出了一个选项。
我为一千个选项全都标了分,哪个高、哪个低都清楚写着,嘿嘿。
(这些分数能否直接按可能性来读,下一节马上说明。)
我依旧没有见过任何一张图。
我提交的是读完盲文后算出的分数条;你们听到的物件名称,来自出口翻译官。
那 1000 个数字,在教程中有时称为 logits,有时直接叫类分数。
每个位置都对应 ImageNet 词表中的一个选项:第 281 号有多高、第 282 号有多高……并不是直接写着 tabby cat 这几个字母。
如果想看它们有多接近概率,可以再执行一次 softmax,把分数转换成一串总和大约为 1 的数。
理解概念即可:softmax 使数字更易读,而真正决定冠军的,通常仍是哪个值最大。
不要把概率更易读误当成答案文字已经印好——文字仍躺在词表中,等待查询。
出口最常用的读取方式只有两步:
argmax:比较 1000 个下标的大小,找出最大者 → 获得类号# 示意:一批里一张图scores = model(x)# shape: (1, 1000)class_id = scores.argmax(dim=1)# 最大分的下标name = imagenet_labels[class_id] # 查表 → 「猫」之类
我负责交卷面分;翻译成物件名,是出口的事。
读错表、错位一对、把训练时的类号和部署时的词表搞乱——分数再漂亮,人话也会荒诞。
(没错,出口流水线出错时,问题未必发生在我体内,饲养员偶尔也得负责。)
饲养员(或者下游同事)一般还会:
进行可视化时,多半又该 OpenCV 那套工具登场——这依然属于流水线,并非我突然拥有了眼睛。
验收发生在出口;训练时的 val 评分也位于考场之外——上一篇已经说过,考试期间我不会修改脑子。
最后再明确一点,以免期待错位:
| 我(AlexNet 这类分类网) | 后辈(YOLO 们) |
|---|---|
| 判断整张图更接近哪个类别 | 一张图中可能存在多个物件 |
| 提交 1000 个类分数(一条分数条) | 输出内容更复杂:每个目标通常包含框坐标 + 类 + 置信度,一张图能够产生一串检测结果 |
| 读取方式:argmax → 查询一张词表 | 读取方式:还需画框、过滤置信度、处理重叠框……出口流水线更长 |
人类所说的认识图片中的物件,有时是指分类,有时则是检测。
我回答的是是什么,也就是从一千个选项中选出一个冠军。
至于在哪里,以及有几个、框多大——那是后辈负责的工作。
所以 YOLO 的结果不能简化成同样输出 1000 个数;它包含的信息维度更多,解读方法也不同。
安全帽、海天那些岗位以后再谈。本系列正文先把分类考生怎样交卷、人类怎样读卷讲清楚。
回看完整链路:
我仍旧没有真正看见过一张图。
我负责读取盲文并提交分数条;你们听到的物件名,则是出口翻译官的成果。
——系列的三篇正文,暂时讲到这里。
正文结束,不代表厨房和亲戚团再无故事。之后计划推出 两篇番外:
transforms 那条流水线:原图怎样经过清洗、切分和定量,再被送上考场。第一篇总说够单开一期,这次就在此还债。——正文到此结束,番外再见。