python - 小幅度向量的数值稳定归一化
问题描述
问题的背景是我在 Jax(基本上是 NumPy)中有一个 resnet 模型,并且我采用了图像相对于其类别预测的梯度。这给了我一个梯度向量 ,g
然后我想对其进行归一化。问题是,分量 , 的大小g[i]
是这样的g[i]**2 == 0
,这意味着仅除以np.linalg.norm(g)
给出 的值0
,因此给我nan
s。
到目前为止,我所做的只是检查范数是否为 0,然后乘以某个常数因子,如 ( g = np.where(np.linalg.norm(g) < 1e-20, g * 1e20, g)
) 所示。
在想也许我应该除以最小的非零元素然后归一化。有没有人知道如何正确规范化这个向量?
解决方案
推荐阅读
- mongodb - MongoDB嵌入
- java - Apache Poi - Java-:如何使用 Apache POI 将包含空行的文本作为单独的段落添加到 Word 文档中?
- odata - 列表绑定未绑定到 XSODATA 服务的列表
- reactjs - 有没有办法转移客户端 React 状态/道具来完成后端快递(api 调用)
- bash - 如何在 bash 中创建未知数量的或运算符?
- java - 从excel运行前200个用户后如何退出浏览器并重新启动我的整个脚本?
- c# - 执行具有分层依赖关系的任务的不确定列表 C#
- python - python selenium 监听http请求
- sql - .db 文件不会在使用 sqlite3 的 Visual Studio Code 上打开
- arrays - JsonSchema 如何对数组使用只读