machine-learning - 层归一化层中 beta 和 gamma 参数的形状是什么?
问题描述
在层归一化中,我们计算整个输入层的均值和方差(而不是我们在批量归一化中所做的跨批次)。然后根据均值和方差对输入层进行归一化,然后返回 gamma 乘以归一化层加上 beta。
我的问题是,gamma 和 beta 标量的形状分别是 (1, 1) 和 (1, 1) 还是它们的形状分别是 (1, number of hidden units) 和 (1, number of hidden units)。
这是我如何实现层规范化,这是正确的!
def layernorm(layer, gamma, beta):
mean = np.mean(layer, axis = 1, keepdims = True)
variance = np.mean((layer - mean) ** 2, axis=1, keepdims = True)
layer_hat = (layer - mean) * 1.0 / np.sqrt(variance + 1e-8)
outpus = gamma * layer_hat + beta
return outpus
其中 gamma 和 beta 定义如下:
gamma = np.random.normal(1, 128)
beta = np.random.normal(1, 128)
解决方案
根据Tensorflow 的实现,假设输入为 shape [B, rest]
, gamma 和 beta 为 shape rest
。rest
对于 2 维输入,可以是 (h, ),对于 4 维输入,可以是 (h, w, c)。
推荐阅读
- linux - Linux 上的 Grep 模式
- codenameone - 如何打开使用 FileChooser 选择的文件?
- presto - Presto 资源组
- elasticsearch - 弹性搜索精确字段值检索
- r - 测试每个因子水平的结果差异(是/否) - 因子水平中缺少一个结果水平
- postgresql - port Oracle decode() using variadic, anyarray, and anyelement
- ios - 如何以及何时将数据保存在数据库中。如果用户正在编辑的对象从服务器中删除
- java - 尝试强制转换子类时出现 ClassCastException
- google-apps-script - 调整由谷歌电子表格创建的谷歌幻灯片的图表位置
- database - aws aurora 中做了哪些资源隔离?