Node.js 异步事件监听报错:emit已经返回true,失败怎样进入error处理器 给事件监听器加上async以后,内部的失败变成了Promise拒绝。调用方看见emit返回true,很容易以为任务已经成功,实际上异步部分可能才刚开始。captureRejections能帮忙把这类拒绝送到明确的错误... yunqueblog/ 技术教程/ 2026-10-03/ 2 阅读
Node.js 深比较测试:字段一样,为什么类实例和普通对象仍然不相等 测试里实际值是Ticket实例,期望值写成一个带id的普通对象,两边打印出来几乎一样,严格深比较却失败。把断言改成宽松版本能让测试变绿,但可能同时放过数值类型错误。更可靠的做法是先写清要比较的是完整对象语义,还是某个... yunqueblog/ 技术教程/ 2026-10-03/ 2 阅读
Node.js parseEnv 读取配置:井号何时成为注释,false为什么仍然是字符串 一个配置值本来含有井号,读进应用后却少了后半截;另一个开关写着false,布尔转换后却打开了功能。这两类问题处在不同层:前者由配置语法决定,后者来自应用如何解释字符串。使用原生parseEnv时,把解析与业务类型校验... yunqueblog/ 技术教程/ 2026-10-03/ 2 阅读
Node.js 十六进制入口校验:Buffer.from没有报错,为什么尾部字节已经不见了 接口接收一个十六进制标识,代码用Buffer.from转换成字节,没有抛出异常,于是继续查询。问题是,转换函数可能只保留有效前缀;提交的标识与实际使用的字节已经不同。对需要完整输入的场景,必须先定义允许的文本,再执行... yunqueblog/ 技术教程/ 2026-10-03/ 2 阅读
缺失像素不是黑色像素:部分卷积怎样重新计数并更新掩码 图像修复中,把缺口统一填成零很方便,但真实黑色像素也可能是零。如果模型只看到数值,就无法区分“已观察到黑色”和“根本没有观察”。部分卷积同时接收特征与有效掩码,并按窗口里实际可用的位置重新缩放。用三个格子就能检查这套... yunqueblog/ AI分享/ 2026-10-03/ 3 阅读
Grad-CAM 热区为何不等于逐像素贡献:先算通道权重再看图 看到一张红色热图,人很容易把亮区读成“每个像素给预测贡献了多少”。Grad-CAM的计算实际先把目标梯度压成每个通道一个权重,再对特征图加权。用两张小图走完这一过程,可以检查AI是否把粗粒度定位、逐位置敏感性和精确贡... yunqueblog/ AI分享/ 2026-10-03/ 3 阅读
Deep Sets 求和以后还剩什么:用两组反例检查集合表征 把一组无序观测交给模型时,打乱输入行序不应改变整组结论。Deep Sets常用“逐项变换、求和、再变换”的结构满足这个要求。不过,求和不看顺序,并不保证保留了所有信息。检查模型结构前,先用几组小输入问清楚:读者需要不... yunqueblog/ AI分享/ 2026-10-03/ 3 阅读
一段声音切得更细,置信度就该更高吗:检查 noisy-OR 汇聚 声音识别模型可能先给每个短片段打分,再判断整段录音中有没有某种事件。若把录音切得更密,片段级分数几乎没变,整段分数却大幅上升,应该先检查汇聚规则。noisy-OR给出了一个容易复算的例子:样本条数与独立信息量不能直接... yunqueblog/ AI分享/ 2026-10-03/ 3 阅读
线性注意力的乘法重排:少存一张大矩阵,分母和因果前缀仍要对齐 长序列注意力会涉及大量查询与键的配对计算。线性注意力的一条思路,是先把键和值汇总成较小状态,再让查询读取状态。阅读或实现这类模块时,应先固定相似度函数,核对两种计算顺序是否等价,再检查因果范围和归一化。 yunqueblog/ AI分享/ 2026-10-03/ 3 阅读
有符号特征哈希:同样发生碰撞,为什么加上负号能让内积无偏 文本分类或在线学习中,特征名可能不断增加。特征哈希把名称直接映射到固定数量的桶,避免维护不断扩大的词典,但不同特征会碰撞。有符号版本额外给每个特征一个固定的正负号。检查这种压缩方法时,最容易混淆的是“平均误差为零”和... yunqueblog/ AI分享/ 2026-10-03/ 3 阅读