我正在学习这个使用layers.MaxPooling2D的TensorFlow-2.x-Tutorials。自动补全也提示layers.MaxPool2D,所以我搜索它们之间的区别。
提到这个api_docs,我发现它们的全名是tf.compat.v1.layers.MaxPooling2D和tf.keras.layers.MaxPool2D,它们有几乎相同的参数,我可以考虑layers.MaxPooling2D = layers.MaxPool2D,但前者是tf1.x,后者是tf2.x?
此外,我还发现了tf.keras.layers.GlobalMaxPool1D(一维时态数据的全局最大池化操作)和tf.keras.layers.GlobalAveragePooling1D(时态数据的全局平均池化操作),这两种操作具有完全相同的参数,为什么函数名的语法不同?
发布于 2020-08-01 11:23:27
我只回答你的第二个问题,因为有人发现了你第一个问题的复制品。
MaxPooling2D从二维数组中取最大值。以下面的输入为例:
import tensorflow as tf
x = tf.random.uniform(minval=0, maxval=10, dtype=tf.int32, shape=(3, 3, 3), seed=42)<tf.Tensor: shape=(3, 3, 3), dtype=int32, numpy=
array([[[2, 4, 3],
[9, 1, 8],
[8, 3, 5]],
[[6, 6, 9],
[9, 6, 1],
[7, 5, 2]],
[[2, 0, 8],
[1, 6, 1],
[2, 3, 9]]])>MaxPooling2D将取这三个元素的平均值:
gmp = tf.keras.layers.GlobalMaxPooling2D()
gmp(x[..., None])<tf.Tensor: shape=(3, 1), dtype=int32, numpy=
array([[9],
[9],
[9]])>每个元素中都有一个9,因此该操作将为所有三个元素返回9。对于GlobalAveragePooling2D来说,这是完全相同的事情,但对于平均值。
gap = tf.keras.layers.GlobalAveragePooling2D()
gap(x[..., None])<tf.Tensor: shape=(3, 1), dtype=int32, numpy=
array([[3],
[6],
[5]])>https://stackoverflow.com/questions/63196778
复制相似问题