Keras的MaxPooling1D和GlobalMaxPooling1D功能有什么区别?

时间:2017-05-02 00:12:20

标签: keras max-pooling

MaxPooling1D和GlobalMaxPooling1D都被描述为时间数据的最大池操作。

keras.layers.pooling.MaxPooling1D(pool_size=2, strides=None, padding='valid')

我知道GlobalMaxPooling1D没有输入参数。 keras.layers.pooling.GlobalMaxPooling1D()

我想直观地了解他们两个人的工作方式有何不同?

2 个答案:

答案 0 :(得分:55)

时间数据的

Td; lr GlobalMaxPooling1D获取最大向量 步骤维度。因此,在全局汇集之后,具有形状[10,4,10]的张量变为具有形状[10,10]的张量。 MaxPooling1D在步数上也取最大值,但每个步幅约束为pool_size。所以[{1}}和pooling_size=2的[10,4,10]张量是stride=1之后的[10,3,10]张量

使用图形帮助的长答案

假设我们有一个简单的句子,包含3个单词,我们对单词进行了一些矢量编码(如word2vec嵌入)。当然你通常不会游泳池和嵌入Tensor,但这应该是一个例子。整个渠道的全球统筹也起作用,但我将其排除在此图之外。最后,填充的内容稍微复杂一些,但我们也不需要这样。

假设我们有MaxPooling(pooling_size=2, stride=1)然后

MaxPooling1D(pool_size=2, strides=1).

这样会产生[1,3,3] Tensor,每个时间步长是2D池的最大值。由于我们有3个游泳池,因此我们有效地将时间步长从4减少到3。

但是,如果我们使用the [[.7, -0.2, .1] | pool size is two boy [.8, -.3, .2] | so look at two words at a time | stride=1 will will [.2, -.1, .4] and take the max over those | move the pool down live [.4 -.4, .8]] 2 vectors. Here we looking 1 word. Now we look 'the' and 'boy'. 'boy' and 'will' and take the max. ,我们将只取该句子的最大向量(Tensor),这可能是单词' live'的向量表示。

确实,这里是如何在keras中定义GlobalMaxPooling1D

GlobalMaxPooling1D

希望有所帮助,请让我澄清一切。

此外,您还可以使用以下示例:

class GlobalMaxPooling1D(_GlobalPooling1D):
    """Global max pooling operation for temporal data.
    # Input shape
        3D tensor with shape: `(batch_size, steps, features)`.
    # Output shape
        2D tensor with shape:
        `(batch_size, features)`
    """

    def call(self, inputs):
        return K.max(inputs, axis=1)

答案 1 :(得分:1)

@ThePassenger [x,y,z]可以看作是您拥有一个带有x个元素的“数组”,其中每个元素都是一个具有y行和z列的矩阵。而且因为您有一个矩阵,其中有x行和y列,并且每个元素都有一个z元素数组。

池只是减少张量的一种方法,例如,如果您有x行和y列的矩阵,则应用池化可以为x-n行和相同的y-m列的矩阵。