关于 np.arccos/arcsin 计算之前需要必须要 np.clip 的那件小事儿
这俩天天天陷入自我怀疑,为啥我写的程序bug频出?
为啥老纸写的 agent 输出的 action 会带有 NaN?
Surprise Motherf***er!!!
就爱情/学业/工作总得有一个顺的吧? F**K!!!
给 np.arccos 输入不在定义域的值,这天经地义的事儿,必须返回 NaN
但是,你在调用的时候,是希望算出角度的,也就是说,你已经有了 cos 值,希望反推出角度θ\thetaθ
正常情况下,你的cos值显然也是,[−1,1][-1, 1][−1,1]这个范围的
但是,总会遇到非正常情况
# 计算向量 self2obj_v 和 self_angle_v 的内积
inner_product = (self2obj_v * self_angle_v).sum()
# 内积除以二者的模长,就是夹角的 cos 值,self_angle_v 是个单位向量
cos = inner_product / np.linalg.norm(self2obj_v) # <----------------- 问题出在这里
# 反推导 arccos 值就是你的角度
obj_angle = np.arccos(cos)
看下出问题的那行,由于他是个分数,所以可能产生异常值,而我就好巧不巧的得到了:
cos=1.000001cos = 1.000001 cos=1.000001
然后,
np.arccos(cos)=NaNnp.arccos(cos)=NaN np.arccos(cos)=NaN
。。。。。。
我以为是激活函数的,问题,或者是什么梯度爆炸的问题,结果是这里出的错…
就,挺秃然的
所以,以后在输出的 cos 值后(如果你是通过内积计算的cos值),最好 clip 一下:
inner_product = (self2obj_v * self_angle_v).sum()
cos = inner_product / np.linalg.norm(self2obj_v)
cos = np.clip(cos, -1, 1) # <---------------------- 这里 clip 一下
obj_angle = np.arccos(cos)
好吧,That’s all.
这么个小bug,折腾我好几天,太过分了
单今天一下午调试的log:
关于 np.arccos/arcsin 计算之前需要必须要 np.clip 的那件小事儿相关推荐
- python使用numpy中的np.mean函数计算数组的均值、np.var函数计算数据的方差、np.std函数计算数组的标准差
python使用numpy中的np.mean函数计算数组的均值.np.var函数计算数据的方差.np.std函数计算数组的标准差 目录
- 好爸爸陪宝宝必做的50件小事儿
1.天气好的时候,一起去放风筝,能和孩子动手做风筝那就更棒了. 2.准备彩色笔,和孩子一起画画,画你们梦想中的家是什么样的. 3.下雨天,穿上雨鞋,带孩子玩踩水花的游戏. 4.一起看精彩的动画片,选每 ...
- pandas使用np.where函数计算返回dataframe中指定数据列包含缺失值的行索引列表list
pandas使用np.where函数计算返回dataframe中指定数据列包含缺失值的行索引列表list(index of rows with missing values in dataframe ...
- python使用numpy的np.float_power函数计算numpy数组中每个数值的指定幂次(例如平方、立方)、np.power函数默认返回整数格式、np.float_power函数返回浮点数
python使用numpy的np.float_power函数计算numpy数组中每个数值的指定幂次(例如平方.立方).np.power函数默认返回整数格式.np.float_power函数默认返回浮点 ...
- python使用numpy的np.power函数计算numpy数组中每个数值的指定幂次(例如平方、立方)、np.power函数默认返回整数格式、np.float_power函数默认返回浮点数
python使用numpy的np.power函数计算numpy数组中每个数值的指定幂次(例如平方.立方).np.power函数默认返回整数格式.np.float_power函数默认返回浮点数 目录
- python使用numpy的np.fmod函数计算numpy数组除以某一特定数值剩余的余数(remainder)、np.mod函数和np.fmod函数对负值的处理方式有差异
python使用numpy的np.fmod函数计算numpy数组除以某一特定数值剩余的余数(remainder).np.mod函数和np.fmod函数对负值的处理方式有差异 目录
- 【计算理论】计算理论总结 ( P 、NP 、NPC 总结 ) ★★
文章目录 一.P 类 二.NP 类 三.NPC 类 ( NP 完全 ) 四.P .NP .NPC 三者关系 一.P 类 P\rm PP 类 : ★ 所有 能够被 确定性 单个带子图灵机 , 在 多项式 ...
- 【计算理论】计算复杂性 ( NP 类不同表述 | 团问题 | P 对 NP 问题 )
文章目录 一.NP 类不同表述 二.团问题 三.P 对 NP 问题 ( P vs NP ) 一.NP 类不同表述 NP\rm NPNP 对应的 确定性图灵机 表述 : NP\rm NPNP 类就是有 ...
- 【原创】一个计算斗地主谁必赢谁必输的程序
这个程序的缘由是看到朋友圈里发布了这么一张图: 我是个斗地主菜鸟啊,反正一时半会是没看出来到底谁能赢,但是我对这类问题倒是很有兴趣,真好我那阵也写过几个类似这种动态规划算法的程序,于是我开发了一个小软 ...
- 【计算理论】计算复杂性 ( 无向图独立集问题 | 独立集问题是 NP 完全问题证明思路 | 证明独立集问题是 NP 完全问题 )
文章目录 一.独立集问题 二.独立集问题是 NP 完全问题证明思路 二.证明独立集问题是 NP 完全问题 一.独立集问题 无向图的独立集 , 指的是在无向图中找到点集的子集 , 使得它们两两之间 , ...
最新文章
- 一个免费分享绘图代码的网站
- BCH网络成功发布第一个商业级别的Token
- 表单美化-原生javascript和jQuery下拉列表(兼容IE6)
- SQL Server开发者Oracle快速入门
- 34、Power Query-中国式排名
- JavaScript入门(part7)--流程控制
- TensorFlow精进之路(一):Softmax回归模型训练MNIST
- JMV监控工具之JConsole
- 基于Matlab科技论文绘图:plot、imagesc
- 回调函数及其应用案例
- 使用SoftEther 上免费校园网(ipv6)
- Google浏览器更改默认路径为D盘路径
- 无缝拼接文件 copy/b 使用
- openshift开源_使用OpenShift Origin降低开源贡献的壁垒
- 创业公司股权分配较好方案推荐
- 异步协议与同步协议:面向字符的协议BSC协议
- 支付宝等第三方支付原理与概述
- Vue + ElementUI 实现后台管理系统模板 -- 前端篇(一):搭建基本环境 配置环境
- ssm餐厅线上点菜系统、点餐系统的设计与实现
- 【案例】云卷云舒,ArcGIS成就时空交错的新闻播报