- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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=2
和 stride=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/
我是一名优秀的程序员,十分优秀!