Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x keras中的分数最大池_Python 3.x_Keras - Fatal编程技术网

Python 3.x keras中的分数最大池

Python 3.x keras中的分数最大池,python-3.x,keras,Python 3.x,Keras,keras库中现有的函数包括最大池、平均池等 然而,我想在本文的基础上在keras中实现分数最大池 我的执行情况如下: model = Sequential() ...... model.add(Conv2D(32, (3, 3))) model.add(Activation('relu')) model.add(MaxPooling2D(pool_size=(2, 2))) 因此,与model.add(MaxPooling2D(pool_size=(2,2))不同,我想实现如下内容: mod

keras库中现有的函数包括最大池、平均池等

然而,我想在本文的基础上在keras中实现分数最大池

我的执行情况如下:

model = Sequential()
......
model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
因此,与model.add(MaxPooling2D(pool_size=(2,2))不同,我想实现如下内容:

model.add(fractionalMaxpool2D(..............))
可能吗? 我目前正在tensorflow中使用keras作为后端

如果有人能提供算法/代码,我将不胜感激


我对这个很陌生,因为我以前没有写过任何自定义图层,所以有人能帮忙吗?谢谢

在我看来,您可以通过实现自定义层来实现这一点

class FractionalMaxpool2D(Layer):
    def __init__(self, output_dim):
        super(FractionalMaxpool2D, self).__init__()
        self.output_dim = output_dim
    def build(self, input_shape):
        # Create a trainable weight variable for this layer.
        # This kind of layer doesn't have any variable
        pass
    def call(self, x):
        # Handle you algorithm here
        return ....  
    def compute_output_shape(self, input_shape):
        # return the output shape
        return (input_shape[0], self.output_dim)
问题是很难实现使用GPU的分数最大池的核心功能。
请从Keras的Github查看。

您可以使用Keras Lambda层来包装tf.nn.fractional\u max\u池,如

FMP=λ(λimg,池大小:tf.nn.分数最大池(img,池大小))

现在,您可以在Keras代码中使用FMP,就像其他具有两个参数的层一样

  • Img:尺寸如[批次、高度、宽度、通道]
  • 池大小:[1.0,池大小你想要,池大小你想要,1.0]

  • 第一个和最后一个是1.0,这是因为tf不在批量大小和通道上执行池,而是在高度和宽度上执行池。您需要更具体一些。你想让人们为你实现算法吗?是的!那太好了。好的,我会编辑的职位更具体!谢谢你的问题得到了回答。不太理想,但你可以在高档和低档之间切换,以有效地获得2/3和3/2。好的,谢谢你的建议!由于我是新来的,你能解释一下代码是怎么回事吗?thanksI意味着您应该为自己的目的创建自定义层。自定义图层是从图层类扩展而来的。层中的一些重要方法是:-构建:如果需要,创建可训练变量。-调用:执行计算以获得输出-计算输出形状:返回输出形状(数据穿过图层后的形状是什么)