# Copyright (c) 2016 Baidu, Inc. All Rights Reserved # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ Pooling type that paddle supported. Note these pooling types are used for sequence input, not for images. Each PoolingType contains. - name: pooling layer type name used by paddle. """ __all__ = [ "BasePoolingType", "MaxPooling", "AvgPooling", "SumPooling", "SquareRootNPooling" ] class BasePoolingType(object): """ Base Pooling Type. """ def __init__(self, name): self.name = name class MaxPooling(BasePoolingType): """ Max pooling. Return the very large values for each dimension in sequence or time steps. .. math:: max(samples\\_of\\_a\\_sequence) """ def __init__(self): BasePoolingType.__init__(self, "max") class AvgPooling(BasePoolingType): """ Average pooling. Return the average values for each dimension in sequence or time steps. .. math:: sum(samples\\_of\\_a\\_sequence)/sample\\_num """ STRATEGY_AVG = "average" STRATEGY_SUM = "sum" STRATEGY_SQROOTN = "squarerootn" def __init__(self, strategy=STRATEGY_AVG): BasePoolingType.__init__(self, "average") self.strategy = strategy class SumPooling(AvgPooling): """ Sum pooling. Return the sum values of each dimension in sequence or time steps. .. math:: sum(samples\\_of\\_a\\_sequence) """ def __init__(self): AvgPooling.__init__(self, AvgPooling.STRATEGY_SUM) class SquareRootNPooling(AvgPooling): """ Square Root Pooling. Return the square root values of each dimension in sequence or time steps. .. math:: sum(samples\\_of\\_a\\_sequence)/sqrt(sample\\_num) """ def __init__(self): AvgPooling.__init__(self, AvgPooling.STRATEGY_SQROOTN)