您好,感谢反馈!
问题分析
按 cann/ops-math 的 ae087b184 版本,StatelessNormal 的 mean、stdev 表示整份输出共用的一组分布参数;以 Tensor 传入时,各自只使用第 0 项。原型注释已经明确这一点,NormalLauncher也只读取 meanGlobal_(0)、stdGlobal_(0),再将这两个值传给随机数变换。因此,传入与 y 同形但各项不同的 Tensor,也不会逐位置采用不同的均值和标准差。
您指出的 README 确实缺少这项说明。“与输出同形状”和“不支持广播”描述的是输入形状约束,不能据此推出逐元素参数语义。另一个需要对齐之处是,当前 tiling 配置并未设置 mean、stdev 必须与 y 同形的检查;输出形状由 shape 输入决定,L0 调用则从 result 的形状构造该输入。
调整方向
可以在 README 的参数表和计算公式处明确:Tensor 参数仅使用第 0 项,所有输出元素共用这组均值和标准差,后续项不参与计算;同时将形状约束与 host 实际校验及原型统一,避免将“同形”理解为逐元素计算。
README 链接的 aclnnInplaceNormal 接口中,mean、std 本身就是 float 标量。当前证据支持按文档口径对齐处理,无需据此将 StatelessNormal 改为逐元素均值、标准差计算;本项也不构成公开逐元素 normal 接口计算错误的证据。


您好,感谢反馈!经核实,README 中 mean/stdev 的参数描述及“同形”约束确实与当前实现契约存在偏差:按 stateless_normal_proto.h 中的原型注释及 NormalLauncher 实现,Tensor 入参实际仅使用第 0 项,所有输出元素共用同一组均值和标准差。这属于文档描述不充分导致的误解,将按现有实现对 README 进行对齐修订,明确 Tensor 参数仅取第 0 项的语义,避免逐元素参数的误导。再次感谢您的细致反馈!


1)标题
[Documentation|文档反馈] StatelessNormal 对同形 mean/stdev 张量的描述未说明实际上只使用首项
2)文档链接
GitCode 文档定位 · 本地快照:random/stateless_normal/README.md
3)问题文档片段
原文第 64–67 行:
原文第 71–74 行:
原文第 90 行:
4)存在的问题(选填)
README 暗示同形张量可以提供各位置的均值、标准差,但 算子原型注释 明确写“Only the 0th element is used for calculation if a tensor is input”,NormalLauncher 也只读取 meanGlobal_(0)/stdGlobal_(0)。建议统一 README 与原型,按当前契约明确只用第 0 项,不要暗示逐元素参数。这是文档契约冲突,不据此宣称已实测公开的逐元素 normal 接口计算错误。