gpt4 book ai didi

keras - Keras 的 MaxPooling1D 和 GlobalMaxPooling1D 函数有什么区别?

转载 作者:行者123 更新时间:2023-12-01 18:14:33 26 4
gpt4 key购买 nike

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

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

据我所知,GlobalMaxPooling1D 不接受输入参数。keras.layers.pooling.GlobalMaxPooling1D()

我只是想直观地了解它们两者的工作方式有何不同?

最佳答案

Td;lr 用于时间数据的 GlobalMaxPooling1D 采用最大向量步骤维度。因此,形状为 [10, 4, 10] 的张量在全局池化后变成形状为 [10, 10] 的张量。 MaxPooling1D 也获取步数的最大值,但限制为每个步幅的 pool_size。因此,具有 pooling_size=2stride=1 的 [10, 4, 10] 张量是 MaxPooling(pooling_size= 后的 [10, 3, 10] 张量2、步幅=1)

带有图形辅助的长答案

假设我们有一个包含 4 个单词的简单句子,并且我们对单词进行了一些向量编码(例如 word2vec 嵌入)。当然,您通常不会在嵌入张量上设置最大池化,但这应该可以作为示例。全局池也可以跨 channel 工作,但我将在本例中省略它。最后,填充会使事情变得稍微复杂一些,但我们在这里也不需要它。

假设我们有MaxPooling1D(pool_size=2, strides=1)。那么

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.

因此,这将产生一个 [1, 3, 3] 张量,每个时间步长是 2D 池中的最大值。由于我们有 3 个池,我们已有效地将时间步采样从 4 降为 3。

但是,如果我们使用 GlobalMaxPooling1D,我们将只获取该句子的最大向量(张量),这可能是“live”一词的向量表示。

确实,这是 GlobalMaxPooling1D 在 keras 中的定义方式

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)

希望这对您有所帮助,请要求我澄清任何问题。

此外,这里还有一个您可以使用的示例:

import numpy as np
from keras.models import Sequential
from keras.layers import Dense, LSTM, GlobalMaxPooling1D, MaxPooling1D

D = np.random.rand(10, 6, 10)

model = Sequential()
model.add(LSTM(16, input_shape=(6, 10), return_sequences=True))
model.add(MaxPooling1D(pool_size=2, strides=1))
model.add(LSTM(10))
model.add(Dense(1))
model.compile(loss='binary_crossentropy', optimizer='sgd')

# print the summary to see how the dimension change after the layers are
# applied

print(model.summary())

# try a model with GlobalMaxPooling1D now

model = Sequential()
model.add(LSTM(16, input_shape=(6, 10), return_sequences=True))
model.add(GlobalMaxPooling1D())
model.add(Dense(1))
model.compile(loss='binary_crossentropy', optimizer='sgd')

print(model.summary())

关于keras - Keras 的 MaxPooling1D 和 GlobalMaxPooling1D 函数有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43728235/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com