gpt4 book ai didi

tensorflow - Keras 中的最小池化

转载 作者:行者123 更新时间:2023-12-04 01:37:08 24 4
gpt4 key购买 nike

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

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

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

最佳答案

否定 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'))

关于tensorflow - Keras 中的最小池化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49217957/

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