为什么tfa.layers.GroupNormalization(groups=1)的输出与LayerNormalization不同?

根据tensorflow附加组件中组归一化的文档说明,当组数设置为1时,组归一化层应成为层归一化。

然而,当我在一个测试张量上调用这些层时,结果却有所不同。看起来组归一化层不仅在时间轴上计算均值和方差,也在通道轴上计算,而层归一化则独立地为每个通道的向量计算这些值。

这是个错误还是我遗漏了什么?当前层归一化的行为实际上对我正在做的事情是有利的。

这是GroupNormalization的文档:

In [5]: x = tf.constant([[[1, 2], [3, 40]], [[1 , -1], [2, 200]]], dtype = tf.float32)In [6]: tf.keras.layers.LayerNormalization()(x)                                                                                                               Out[6]: <tf.Tensor: shape=(2, 2, 2), dtype=float32, numpy=array([[[-0.99800587,  0.99800587],        [-0.99999857,  0.99999857]],       [[ 0.9995002 , -0.9995002 ],        [-1.        ,  1.        ]]], dtype=float32)>In [7]: tfa.layers.GroupNormalization(groups = 1)(x)                                                                                                          Out[7]: <tf.Tensor: shape=(2, 2, 2), dtype=float32, numpy=array([[[-0.6375344 , -0.57681686],        [-0.5160993 ,  1.7304504 ]],       [[-0.5734435 , -0.5966129 ],        [-0.5618587 ,  1.7319152 ]]], dtype=float32)>

回答:

根据TF 2.4.1tf.keras.layers.LayerNormalization的文档,源码

请注意,其他层归一化的实现可能会选择在与归一化轴不同的另一组轴上定义gammabeta。例如,组归一化(Wu et al. 2018)在组大小为1时,相当于跨高度、宽度和通道进行归一化的层归一化,并且gammabeta仅跨越通道维度。因此,此层归一化实现将不匹配组大小设置为1的组归一化层

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注