首页 > 解决方案 > 是否可以在 Keras 中实现最大池化层,以提供给定池大小的最大 n 值?

问题描述

我有一个多维时间序列数据集,它具有以下形状 (n_samples, 512, 9),其中 512 是时间步长,9 是通道。

在具有 64 个内核的第一个 1D CNN 层之后,我的输出形状是 (n_samples, 512, 64)。现在我想将我的输入输入到下一层,这是一个 LSTM,形状为 (n_samples, 384, 64)。

如果我有一个 Maxpool 层可以从 4 的池大小返回最大 3 个值,但可以在 Keras 中实现这一点吗?

标签: pythontensorflowmachine-learningkerasdeep-learning

解决方案


你可能可以用一个keras.layers.Lambda层来解决这个问题,后端是tf.nn.in_top_k. 请注意,处理与 略有不同tf.nn.top_k因为如果所有值都具有相同的值,则它不会合并!

现在,您可以自己定义一个返回最高k值的函数(并且这样做有些效率),然后将其作为函数传递给 lambda 层。

遗憾的是,我与 Keras 合作的时间不足以输入特定的代码,但也许这足以为您指明正确的方向。此外, TensorFlow也有一个类似的线程。


推荐阅读