用 AI 做保序校准:高分样本暂时失败,为何要和前一段合并 分类分数越高,校准后的概率通常希望不要反而下降。但少量标注里完全可能出现“低一点的分数成功,高一点的分数失败”。保序回归不会把标签重新排序,它在保持分数顺序的条件下寻找一组尽量贴近标签的拟合值。 yunqueblog/ AI分享/ 2026-10-02/ 3 阅读
让 AI 比较 Huber 与 Smooth L1:转折点相同,损失为何仍差一个倍数 Huber与Smooth L1都常用来减弱大残差的影响,名字相近、曲线形状也相似。让AI比较时,若只说“都是小误差平方、大误差线性”,就会漏掉缩放差别,连同一批数的损失大小都可能算错。 yunqueblog/ AI分享/ 2026-10-02/ 3 阅读
用 AI 算一层 GCN:邻居都填一,归一化后为何不一定还是一 图神经网络的聚合常被口头叫作“平均一下邻居”。但经典GCN的一种对称归一化并不等于逐行求平均。给每个节点都放入数字1,输出仍可能不同,这个小反例能帮助AI把两个公式分清。 yunqueblog/ AI分享/ 2026-10-02/ 3 阅读
让 AI 走一遍 NMS:中间框被压掉以后,为何不能继续淘汰第三个框 目标检测给出多个重叠框以后,非极大值抑制NMS会保留哪些?若AI把所有“重叠超过阈值”的框连成一组,再整组只留最高分,算出的结果可能与贪心NMS不同。三个框就能把差别走出来。 yunqueblog/ AI分享/ 2026-10-02/ 3 阅读
JavaScript Object.groupBy 的键转换:两个不同对象,为什么被分进同一组 按owner对象给任务分组,回调返回了两个不同的owner,Object.groupBy却只产出一组。原因是回调返回值会转换成对象属性键:两个普通对象在本例都变成同一个字符串[object Object],区别在分组... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
Node.js 异常断言:async 函数写了 throw,为什么 assert.throws 仍说没有异常 给一个async函数写测试,函数第一句就throw,assert.throws却报告缺少预期异常。关键不在错误出现得够不够早,而在调用接口:async函数把失败表达为返回Promise的拒绝,同步异常断言不会替你等待... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
Bash mapfile 的分隔参数:写了两个冒号,为什么仍按每一个冒号切开 输入A::B::C,希望按双冒号分成三项,把-d参数写成两个冒号以后,却读到五项,其中还有空字符串。Bash的mapfile只用delim参数的第一个字符决定记录终点,不会把整段参数解释成多字符分隔串。下面使用带-d... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
Bash return 的八位状态:明明返回 256,为什么 if 却进入成功分支 把函数里算出的数量写成return 256,调用后if却认为成功,问号参数也只剩零。Bash的return传递的是命令退出状态,不是任意范围的数值结果。给它一个整数以后,调用者看到的是最低八位,原来的完整数字已经不能... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
SQLite TEMP 同名表:主表没有改,为什么 SELECT 却读到另一份内容 调试脚本建立了一张叫item的临时表,后面原封不动执行SELECT label FROM item,结果突然变成另一份数据。主库中的item可能完全没有改变,只是未带数据库名的表引用先找到了temp里的同名对象。查询... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
SQLite 同条 UPDATE 的取值时机:x 已经加一,为什么 y 仍然拿到旧的 x 想让x增加一,再把新x写进y,把两项放进同一条UPDATE的SET列表后,却发现y得到旧x。SQLite针对被更新行的列引用,会先求出右侧标量表达式,再实施赋值。SET中从左到右的书写位置,不能当作逐行执行的脚本步骤... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读