【问题标题】:MinimumPooling in KerasKeras 中的最小池化
【发布时间】:2018-08-19 10:53:09
【问题描述】:

我只在带有 tensorflow 后端的 keras 中找到了 MaxPooling2D 和 AveragePooling2D。一直在寻找MinimumPooling2D。这个 github link 建议使用类似这样的东西来进行最小池化 (pool2d(-x))

在输入前使用负号时出现错误。我在 keras 中使用的以下行

MaxPooling2D((3, 3), strides=(2, 2), padding='same')(-inputs)

【问题讨论】:

  • 我会在您链接的主题中进一步阅读。

标签: tensorflow keras max-pooling


【解决方案1】:

否定MaxPooling2D 层的输入参数是不够的,因为这样池化的值将是负数。

我认为你最好实际实现一个通用的MinPooling2D 类,它的池化函数获得与 Keras 的MaxPooling2D 类相同的参数并且操作类似。通过继承MaxPooling2D,实现非常简单:

from keras import layers
from keras import backend as K

class MinPooling2D(layers.MaxPooling2D):


  def __init__(self, pool_size=(2, 2), strides=None, 
               padding='valid', data_format=None, **kwargs):
    super(MaxPooling2D, self).__init__(pool_size, strides, padding,
                                       data_format, **kwargs)

  def pooling_function(inputs, pool_size, strides, padding, data_format):
    return -K.pool2d(-inputs, pool_size, strides, padding, data_format,
                                                         pool_mode='max')

现在您可以像使用MaxPooling2D 层一样使用该层。例如,下面是一个如何在简单的序列卷积神经网络中使用MinPooling2D 层的示例:

from keras import models
from keras import layers

model = models.Sequential()

model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(MinPooling2D(pool_size=(2, 2)))
model.add(layers.Flatten())
model.add(layers.Dense(10, activation='softmax'))

【讨论】:

  • 不确定我是不是唯一一个,但是在 colab 中运行它后,我收到了一个关于池的错误:TypeError Traceback (last recent call last) /usr/local/lib/python3.6 /dist-packages/tensorflow/python/keras/utils/conv_utils.py in normalize_tuple(value, n, name) 71 try: ---> 72 value_tuple = tuple(value) 73 除了 TypeError: TypeError: 'NoneType' object is不可迭代
【解决方案2】:

将 Keras 与 TF 结合使用,您只需使用 MaxPooling2D() 即可。您将输入特征图乘以-1,执行MaxPooling2D(),然后再次将输出乘以-1。这里怎么做:

 min_pool = -tf.keras.layers.MaxPooling2D()(-input_features)

【讨论】:

    猜你喜欢
    • 2017-12-02
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-12
    • 2022-10-30
    • 2017-01-23
    • 1970-01-01
    相关资源
    最近更新 更多