Keras:沿1个轴的最大池,沿另一个轴的平均池?

时间:2020-06-01 22:21:32

标签: python tensorflow keras tf.keras

在Keras中,对于我特定的2D图像数据集,我想尝试使用沿水平轴的最大合并量和沿垂直轴的平均合并量。我该怎么办?

(目前,我仅在两个方向上都具有最大池;我很好奇“混合”池方法是否会因我的特定数据集的特定性而更好地工作。)

我该怎么做?

  1. 我希望只是连续地为不同的轴调用MaxPooling1D和AveragePooling1D层,但是我看不到这些层有任何“ axis =“关键字参数。

  2. 只需将张量数据的轴子集传递到一维池中或尝试对数据进行切片:当然,如果您认为可行,我可以尝试一下,但是我的尝试经验切片TF张量是非常棘手的。所以我对此没有信心,但是如果您让我知道。

  3. 或者,到目前为止,我尝试编写自己的“ HybridPooling2D”层已经使我深入到了张量流代码的兔子洞中,需要调用更多的张量流代码。因此,在尝试尝试编写自己的tensorflow.python.ops.nn.hyb_pool()类型的例程之前,我以为我会暂停并在S.O上询问。在继续之前。

另一个可选请求:由于遗留原因,我仍在使用keras==2.1.3tensorflow=1.14。如果给出的答案仍然可以解决该问题(例如不需要TF 2),那就太好了。因为如果我只需要更新这些内容以尝试我的想法,那么现在可能不值得我花时间。谢谢。

更新:按照上述选项2,我正在尝试使用Lambda的替代品(用于pool_size=(2,2)

    x = MaxPooling2D(pool_size=pool_size)(x)

有类似...的东西吗?

    x = Lambda(lambda x: x[:,0,:,:], output_shape=(??) + (input_shape[??]))(x)
    x = MaxPooling1D(pool_size=pool_size[0])(x)
    x = Lambda(lambda x: x[:,:,1,:], output_shape=(??) + input_shape[??]))(x)
    x = AveragePooling1D(pool_size=pool_size[1])(x)

...是吗? (我知道这是错误的,我不想只沿一行或一列合并,而是沿所有行然后沿剩余的单个列或其他内容进行合并。)是的,我知道Avg&Max操作沿不同的轴不会上下班;我可以。这只是尝试。

0 个答案:

没有答案