@@ -162,7 +162,7 @@ def meanpool2d(net, filter_size=(3, 3), strides=(2, 2), padding='SAME', name='me
162162
163163 Parameters
164164 -----------
165- net : :class:`Layer`
165+ layer : :class:`Layer`
166166 The previous layer with a output rank as 4.
167167 filter_size : tuple of int
168168 (height, width) for filter size.
@@ -186,12 +186,13 @@ def meanpool2d(net, filter_size=(3, 3), strides=(2, 2), padding='SAME', name='me
186186 return net
187187
188188
189- def maxpool3d (net , filter_size = (3 , 3 , 3 ), strides = (2 , 2 , 2 ), padding = 'valid' , data_format = 'channels_last' , name = 'maxpool3d' ):
189+ # def maxpool3d(net, filter_size=(3, 3, 3), strides=(2, 2, 2), padding='valid', data_format='channels_last', name='maxpool3d'):
190+ class MaxPool3d (Layer ):
190191 """Wrapper for `tf.layers.max_pooling3d <https://www.tensorflow.org/api_docs/python/tf/layers/max_pooling3d>`__ .
191192
192193 Parameters
193194 ------------
194- net : :class:`Layer`
195+ layer : :class:`Layer`
195196 The previous layer with a output rank as 5.
196197 filter_size : tuple of int
197198 Pooling window size.
@@ -213,21 +214,35 @@ def maxpool3d(net, filter_size=(3, 3, 3), strides=(2, 2, 2), padding='valid', da
213214 A max pooling 3-D layer with a output rank as 5.
214215
215216 """
216- logging .info ("MaxPool3d %s: filter_size:%s strides:%s padding:%s" % (name , str (filter_size ), str (strides ), str (padding )))
217- outputs = tf .layers .max_pooling3d (net .outputs , filter_size , strides , padding = padding , data_format = data_format , name = name )
218217
219- net_new = copy .copy (net )
220- net_new .outputs = outputs
221- net_new .all_layers .extend ([outputs ])
222- return net_new
218+ def __init__ (self , layer , filter_size = (3 , 3 , 3 ), strides = (2 , 2 , 2 ), padding = 'valid' , data_format = 'channels_last' , name = 'maxpool3d' ):
219+
220+ # check layer name (fixed)
221+ Layer .__init__ (self , name = name )
222+
223+ # the input of this layer is the output of previous layer (fixed)
224+ self .inputs = layer .outputs
225+
226+ logging .info ("MaxPool3d %s: filter_size:%s strides:%s padding:%s" % (name , str (filter_size ), str (strides ), str (padding )))
227+
228+ self .outputs = tf .layers .max_pooling3d (layer .outputs , filter_size , strides , padding = padding , data_format = data_format , name = name )
229+
230+ # get stuff from previous layer (fixed)
231+ self .all_layers = list (layer .all_layers )
232+ self .all_params = list (layer .all_params )
233+ self .all_drop = dict (layer .all_drop )
223234
235+ # update layer (customized)
236+ self .all_layers .append (self .outputs )
224237
225- def meanpool3d (net , filter_size = (3 , 3 , 3 ), strides = (2 , 2 , 2 ), padding = 'valid' , data_format = 'channels_last' , name = 'meanpool3d' ):
238+
239+ # def meanpool3d(net, filter_size=(3, 3, 3), strides=(2, 2, 2), padding='valid', data_format='channels_last', name='meanpool3d'):
240+ class MeanPool3d (Layer ):
226241 """Wrapper for `tf.layers.average_pooling3d <https://www.tensorflow.org/api_docs/python/tf/layers/average_pooling3d>`__
227242
228243 Parameters
229244 ------------
230- net : :class:`Layer`
245+ layer : :class:`Layer`
231246 The previous layer with a output rank as 5.
232247 filter_size : tuple of int
233248 Pooling window size.
@@ -249,19 +264,214 @@ def meanpool3d(net, filter_size=(3, 3, 3), strides=(2, 2, 2), padding='valid', d
249264 A mean pooling 3-D layer with a output rank as 5.
250265
251266 """
252- logging .info ("MeanPool3d %s: filter_size:%s strides:%s padding:%s" % (name , str (filter_size ), str (strides ), str (padding )))
253- outputs = tf .layers .average_pooling3d (net .outputs , filter_size , strides , padding = padding , data_format = data_format , name = name )
254267
255- net_new = copy .copy (net )
256- net_new .outputs = outputs
257- net_new .all_layers .extend ([outputs ])
258- return net_new
268+ def __init__ (self , layer , filter_size = (3 , 3 , 3 ), strides = (2 , 2 , 2 ), padding = 'valid' , data_format = 'channels_last' , name = 'meanpool3d' ):
269+ # check layer name (fixed)
270+ Layer .__init__ (self , name = name )
271+
272+ # the input of this layer is the output of previous layer (fixed)
273+ self .inputs = layer .outputs
274+
275+ # print out info (customized)
276+ logging .info ("MeanPool3d %s: filter_size:%s strides:%s padding:%s" % (name , str (filter_size ), str (strides ), str (padding )))
277+
278+ # operation (customized)
279+ self .outputs = tf .layers .average_pooling3d (layer .outputs , filter_size , strides , padding = padding , data_format = data_format , name = name )
280+
281+ # get stuff from previous layer (fixed)
282+ self .all_layers = list (layer .all_layers )
283+ self .all_params = list (layer .all_params )
284+ self .all_drop = dict (layer .all_drop )
285+
286+ # update layer (customized)
287+ self .all_layers .append (self .outputs )
288+ # self.all_params.extend( [W, b] )
289+
290+
291+ class GlobalMaxPool1d (Layer ):
292+ """The :class:`GlobalMaxPool1d` class is a 1D Global Max Pooling layer.
293+
294+ Parameters
295+ ------------
296+ layer : :class:`Layer`
297+ The previous layer with a output rank as 3.
298+ name : str
299+ A unique layer name.
300+
301+ Examples
302+ ---------
303+ >>> x = tf.placeholder("float32", [None, 100, 30])
304+ >>> n = InputLayer(x, name='in')
305+ >>> n = GlobalMaxPool1d(n)
306+ ... [None, 30]
307+ """
308+
309+ def __init__ (
310+ self ,
311+ layer = None ,
312+ name = 'globalmaxpool1d' ,
313+ ):
314+ # check layer name (fixed)
315+ Layer .__init__ (self , name = name )
316+
317+ # the input of this layer is the output of previous layer (fixed)
318+ self .inputs = layer .outputs
319+
320+ # print out info (customized)
321+ logging .info ("GlobalMaxPool1d %s" % name )
322+
323+ # operation (customized)
324+ self .outputs = tf .reduce_max (layer .outputs , axis = 1 , name = name )
325+
326+ # get stuff from previous layer (fixed)
327+ self .all_layers = list (layer .all_layers )
328+ self .all_params = list (layer .all_params )
329+ self .all_drop = dict (layer .all_drop )
330+
331+ # update layer (customized)
332+ self .all_layers .append (self .outputs )
333+ # self.all_params.extend( [W, b] )
334+
335+
336+ class GlobalMeanPool1d (Layer ):
337+ """The :class:`GlobalMeanPool1d` class is a 1D Global Mean Pooling layer.
338+
339+ Parameters
340+ ------------
341+ layer : :class:`Layer`
342+ The previous layer with a output rank as 3.
343+ name : str
344+ A unique layer name.
345+
346+ Examples
347+ ---------
348+ >>> x = tf.placeholder("float32", [None, 100, 30])
349+ >>> n = InputLayer(x, name='in')
350+ >>> n = GlobalMeanPool1d(n)
351+ ... [None, 30]
352+ """
353+
354+ def __init__ (
355+ self ,
356+ layer = None ,
357+ name = 'globalmeanpool1d' ,
358+ ):
359+ # check layer name (fixed)
360+ Layer .__init__ (self , name = name )
361+
362+ # the input of this layer is the output of previous layer (fixed)
363+ self .inputs = layer .outputs
364+
365+ # print out info (customized)
366+ logging .info ("GlobalMeanPool1d %s" % name )
367+
368+ # operation (customized)
369+ self .outputs = tf .reduce_mean (layer .outputs , axis = 1 , name = name )
370+
371+ # get stuff from previous layer (fixed)
372+ self .all_layers = list (layer .all_layers )
373+ self .all_params = list (layer .all_params )
374+ self .all_drop = dict (layer .all_drop )
375+
376+ # update layer (customized)
377+ self .all_layers .append (self .outputs )
378+ # self.all_params.extend( [W, b] )
379+
380+
381+ class GlobalMaxPool2d (Layer ):
382+ """The :class:`GlobalMaxPool2d` class is a 2D Global Max Pooling layer.
383+
384+ Parameters
385+ ------------
386+ layer : :class:`Layer`
387+ The previous layer with a output rank as 4.
388+ name : str
389+ A unique layer name.
390+
391+ Examples
392+ ---------
393+ >>> x = tf.placeholder("float32", [None, 100, 100, 30])
394+ >>> n = InputLayer(x, name='in2')
395+ >>> n = GlobalMaxPool2d(n)
396+ ... [None, 30]
397+ """
398+
399+ def __init__ (
400+ self ,
401+ layer = None ,
402+ name = 'globalmaxpool2d' ,
403+ ):
404+ # check layer name (fixed)
405+ Layer .__init__ (self , name = name )
406+
407+ # the input of this layer is the output of previous layer (fixed)
408+ self .inputs = layer .outputs
409+
410+ # print out info (customized)
411+ logging .info ("GlobalMaxPool2d %s" % name )
412+
413+ # operation (customized)
414+ self .outputs = tf .reduce_max (layer .outputs , axis = [1 , 2 ], name = name )
415+
416+ # get stuff from previous layer (fixed)
417+ self .all_layers = list (layer .all_layers )
418+ self .all_params = list (layer .all_params )
419+ self .all_drop = dict (layer .all_drop )
420+
421+ # update layer (customized)
422+ self .all_layers .append (self .outputs )
423+ # self.all_params.extend( [W, b] )
424+
425+
426+ class GlobalMeanPool2d (Layer ):
427+ """The :class:`GlobalMeanPool2d` class is a 2D Global Mean Pooling layer.
428+
429+ Parameters
430+ ------------
431+ layer : :class:`Layer`
432+ The previous layer with a output rank as 4.
433+ name : str
434+ A unique layer name.
435+
436+ Examples
437+ ---------
438+ >>> x = tf.placeholder("float32", [None, 100, 100, 30])
439+ >>> n = InputLayer(x, name='in2')
440+ >>> n = GlobalMeanPool2d(n)
441+ ... [None, 30]
442+ """
443+
444+ def __init__ (
445+ self ,
446+ layer = None ,
447+ name = 'globalmeanpool2d' ,
448+ ):
449+ # check layer name (fixed)
450+ Layer .__init__ (self , name = name )
451+
452+ # the input of this layer is the output of previous layer (fixed)
453+ self .inputs = layer .outputs
454+
455+ # print out info (customized)
456+ logging .info ("GlobalMeanPool2d %s" % name )
457+
458+ # operation (customized)
459+ self .outputs = tf .reduce_mean (layer .outputs , axis = [1 , 2 ], name = name )
460+
461+ # get stuff from previous layer (fixed)
462+ self .all_layers = list (layer .all_layers )
463+ self .all_params = list (layer .all_params )
464+ self .all_drop = dict (layer .all_drop )
465+
466+ # update layer (customized)
467+ self .all_layers .append (self .outputs )
468+ # self.all_params.extend( [W, b] )
259469
260470
261471# Alias
262472MaxPool1d = maxpool1d
263473MaxPool2d = maxpool2d
264- MaxPool3d = maxpool3d
474+ # MaxPool3d = maxpool3d
265475MeanPool1d = meanpool1d
266476MeanPool2d = meanpool2d
267- MeanPool3d = meanpool3d
477+ # MeanPool3d = meanpool3d
0 commit comments