1b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower# Copyright 2015 The TensorFlow Authors. All Rights Reserved.
2b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower#
3b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower# Licensed under the Apache License, Version 2.0 (the "License");
4b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower# you may not use this file except in compliance with the License.
5b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower# You may obtain a copy of the License at
6b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower#
7b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower#     http://www.apache.org/licenses/LICENSE-2.0
8b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower#
9b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower# Unless required by applicable law or agreed to in writing, software
10b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower# distributed under the License is distributed on an "AS IS" BASIS,
11b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower# See the License for the specific language governing permissions and
13b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower# limitations under the License.
14b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower# =============================================================================
15b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
16b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower# pylint: disable=unused-import,g-bad-import-order
17b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower"""Contains the pooling layer classes and their functional aliases.
18b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower"""
19b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlowerfrom __future__ import absolute_import
20b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlowerfrom __future__ import division
21b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlowerfrom __future__ import print_function
22b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
2356ceca431454635e8ea456cb35f9aeb7f62a8948Alexandre Passosfrom tensorflow.python.eager import context
2435253fa89c5f8af25e3d84f76980729569091a6cFrancois Cholletfrom tensorflow.python.framework import tensor_shape
25b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlowerfrom tensorflow.python.layers import base
265d43d5531f8f1d6ff75b055df2096a4b2a2ae755Francois Cholletfrom tensorflow.python.layers import utils
27a373b1f74215e44920bf9362a51bece530edf88aPatrick Nguyenfrom tensorflow.python.ops import array_ops
28a373b1f74215e44920bf9362a51bece530edf88aPatrick Nguyenfrom tensorflow.python.ops import nn
29fa3fb289ba6a1718f9c76b2277a58f95f5e878abAnna Rfrom tensorflow.python.util.tf_export import tf_export
30b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
31b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
321e3e5d424eaa6332314f8ad1d54089eb0f9e02e7Francois Cholletclass _Pooling1D(base.Layer):
33b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  """Pooling layer for arbitrary pooling functions, for 1D inputs.
34b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
35b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  This class only exists for code reuse. It will never be an exposed API.
36b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
37b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  Arguments:
38b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    pool_function: The pooling function to apply, e.g. `tf.nn.max_pool`.
39b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    pool_size: An integer or tuple/list of a single integer,
40b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      representing the size of the pooling window.
41b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    strides: An integer or tuple/list of a single integer, specifying the
42b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      strides of the pooling operation.
43b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    padding: A string. The padding method, either 'valid' or 'same'.
44b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Case-insensitive.
45b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    data_format: A string, one of `channels_last` (default) or `channels_first`.
46b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      The ordering of the dimensions in the inputs.
47b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `channels_last` corresponds to inputs with shape
48b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `(batch, length, channels)` while `channels_first` corresponds to
49b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      inputs with shape `(batch, channels, length)`.
50b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    name: A string, the name of the layer.
51b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  """
52b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
53b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  def __init__(self, pool_function, pool_size, strides,
54b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower               padding='valid', data_format='channels_last',
55b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower               name=None, **kwargs):
56b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    super(_Pooling1D, self).__init__(name=name, **kwargs)
57b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    self.pool_function = pool_function
58b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    self.pool_size = utils.normalize_tuple(pool_size, 1, 'pool_size')
59b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    self.strides = utils.normalize_tuple(strides, 1, 'strides')
60b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    self.padding = utils.normalize_padding(padding)
61b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    self.data_format = utils.normalize_data_format(data_format)
6235253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet    self.input_spec = base.InputSpec(ndim=3)
63b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
64b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  def call(self, inputs):
65b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    # There is no TF op for 1D pooling, hence we make the inputs 4D.
66b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    if self.data_format == 'channels_last':
67d9f93c42a50b1f1401d9c186eac0ae8dc9093c3bJianwei Xie      # input is NWC, make it NHWC
68b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      inputs = array_ops.expand_dims(inputs, 1)
69d9f93c42a50b1f1401d9c186eac0ae8dc9093c3bJianwei Xie      # pool on the W dim
70b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      pool_shape = (1, 1) + self.pool_size + (1,)
71b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      strides = (1, 1) + self.strides + (1,)
72d9f93c42a50b1f1401d9c186eac0ae8dc9093c3bJianwei Xie      data_format = 'NHWC'
73d9f93c42a50b1f1401d9c186eac0ae8dc9093c3bJianwei Xie    else:
74d9f93c42a50b1f1401d9c186eac0ae8dc9093c3bJianwei Xie      # input is NCW, make it NCHW
75d9f93c42a50b1f1401d9c186eac0ae8dc9093c3bJianwei Xie      inputs = array_ops.expand_dims(inputs, 2)
76d9f93c42a50b1f1401d9c186eac0ae8dc9093c3bJianwei Xie      # pool on the W dim
77d9f93c42a50b1f1401d9c186eac0ae8dc9093c3bJianwei Xie      pool_shape = (1, 1, 1) + self.pool_size
78d9f93c42a50b1f1401d9c186eac0ae8dc9093c3bJianwei Xie      strides = (1, 1, 1) + self.strides
79b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      data_format = 'NCHW'
80b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
81b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    outputs = self.pool_function(
82b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        inputs,
83b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        ksize=pool_shape,
84b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        strides=strides,
85b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        padding=self.padding.upper(),
86b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        data_format=data_format)
87b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
88b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    if self.data_format == 'channels_last':
89b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      return array_ops.squeeze(outputs, 1)
90d9f93c42a50b1f1401d9c186eac0ae8dc9093c3bJianwei Xie    else:
91d9f93c42a50b1f1401d9c186eac0ae8dc9093c3bJianwei Xie      return array_ops.squeeze(outputs, 2)
92b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
93e4fbe7c2236d350e02f85eb6a58fa0dfa466ad5eFrancois Chollet  def compute_output_shape(self, input_shape):
9435253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet    input_shape = tensor_shape.TensorShape(input_shape).as_list()
9535253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet    length = utils.conv_output_length(input_shape[1], self.pool_size[0],
9635253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet                                      self.padding, self.strides[0])
9735253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet    return tensor_shape.TensorShape([input_shape[0], length, input_shape[2]])
9835253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet
99b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
100fa3fb289ba6a1718f9c76b2277a58f95f5e878abAnna R@tf_export('layers.AveragePooling1D')
101b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlowerclass AveragePooling1D(_Pooling1D):
102b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  """Average Pooling layer for 1D inputs.
103b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
104b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  Arguments:
105b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    pool_size: An integer or tuple/list of a single integer,
106b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      representing the size of the pooling window.
107b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    strides: An integer or tuple/list of a single integer, specifying the
108b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      strides of the pooling operation.
109b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    padding: A string. The padding method, either 'valid' or 'same'.
110b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Case-insensitive.
111b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    data_format: A string, one of `channels_last` (default) or `channels_first`.
112b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      The ordering of the dimensions in the inputs.
113b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `channels_last` corresponds to inputs with shape
114b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `(batch, length, channels)` while `channels_first` corresponds to
115b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      inputs with shape `(batch, channels, length)`.
116b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    name: A string, the name of the layer.
117b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  """
118b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
119b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  def __init__(self, pool_size, strides,
120b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower               padding='valid', data_format='channels_last',
121b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower               name=None, **kwargs):
122b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    super(AveragePooling1D, self).__init__(
123b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        nn.avg_pool,
124b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        pool_size=pool_size,
125b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        strides=strides,
126b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        padding=padding,
127b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        data_format=data_format,
128b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        name=name,
129b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        **kwargs)
130b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
131b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
132fa3fb289ba6a1718f9c76b2277a58f95f5e878abAnna R@tf_export('layers.average_pooling1d')
133b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlowerdef average_pooling1d(inputs, pool_size, strides,
134b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                      padding='valid', data_format='channels_last',
135b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                      name=None):
136b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  """Average Pooling layer for 1D inputs.
137b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
138b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  Arguments:
139b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    inputs: The tensor over which to pool. Must have rank 3.
140b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    pool_size: An integer or tuple/list of a single integer,
141b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      representing the size of the pooling window.
142b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    strides: An integer or tuple/list of a single integer, specifying the
143b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      strides of the pooling operation.
144b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    padding: A string. The padding method, either 'valid' or 'same'.
145b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Case-insensitive.
146b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    data_format: A string, one of `channels_last` (default) or `channels_first`.
147b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      The ordering of the dimensions in the inputs.
148b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `channels_last` corresponds to inputs with shape
149b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `(batch, length, channels)` while `channels_first` corresponds to
150b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      inputs with shape `(batch, channels, length)`.
151b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    name: A string, the name of the layer.
152b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
153b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  Returns:
154b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    The output tensor, of rank 3.
15556ceca431454635e8ea456cb35f9aeb7f62a8948Alexandre Passos
15656ceca431454635e8ea456cb35f9aeb7f62a8948Alexandre Passos  Raises:
15756ceca431454635e8ea456cb35f9aeb7f62a8948Alexandre Passos    ValueError: if eager execution is enabled.
158b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  """
159b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  layer = AveragePooling1D(pool_size=pool_size,
160b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                           strides=strides,
161b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                           padding=padding,
162b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                           data_format=data_format,
163b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                           name=name)
164b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  return layer.apply(inputs)
165b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
166b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
167fa3fb289ba6a1718f9c76b2277a58f95f5e878abAnna R@tf_export('layers.MaxPooling1D')
168b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlowerclass MaxPooling1D(_Pooling1D):
169b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  """Max Pooling layer for 1D inputs.
170b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
171b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  Arguments:
172b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    pool_size: An integer or tuple/list of a single integer,
173b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      representing the size of the pooling window.
174b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    strides: An integer or tuple/list of a single integer, specifying the
175b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      strides of the pooling operation.
176b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    padding: A string. The padding method, either 'valid' or 'same'.
177b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Case-insensitive.
178b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    data_format: A string, one of `channels_last` (default) or `channels_first`.
179b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      The ordering of the dimensions in the inputs.
180b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `channels_last` corresponds to inputs with shape
181b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `(batch, length, channels)` while `channels_first` corresponds to
182b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      inputs with shape `(batch, channels, length)`.
183b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    name: A string, the name of the layer.
184b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  """
185b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
186b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  def __init__(self, pool_size, strides,
187b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower               padding='valid', data_format='channels_last',
188b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower               name=None, **kwargs):
189b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    super(MaxPooling1D, self).__init__(
190b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        nn.max_pool,
191b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        pool_size=pool_size,
192b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        strides=strides,
193b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        padding=padding,
194b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        data_format=data_format,
195b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        name=name,
196b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        **kwargs)
197b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
198b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
199fa3fb289ba6a1718f9c76b2277a58f95f5e878abAnna R@tf_export('layers.max_pooling1d')
200b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlowerdef max_pooling1d(inputs, pool_size, strides,
201b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                  padding='valid', data_format='channels_last',
202b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                  name=None):
203b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  """Max Pooling layer for 1D inputs.
204b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
205b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  Arguments:
206b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    inputs: The tensor over which to pool. Must have rank 3.
207b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    pool_size: An integer or tuple/list of a single integer,
208b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      representing the size of the pooling window.
209b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    strides: An integer or tuple/list of a single integer, specifying the
210b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      strides of the pooling operation.
211b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    padding: A string. The padding method, either 'valid' or 'same'.
212b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Case-insensitive.
213b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    data_format: A string, one of `channels_last` (default) or `channels_first`.
214b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      The ordering of the dimensions in the inputs.
215b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `channels_last` corresponds to inputs with shape
216b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `(batch, length, channels)` while `channels_first` corresponds to
217b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      inputs with shape `(batch, channels, length)`.
218b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    name: A string, the name of the layer.
219b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
220b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  Returns:
221b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    The output tensor, of rank 3.
22256ceca431454635e8ea456cb35f9aeb7f62a8948Alexandre Passos
22356ceca431454635e8ea456cb35f9aeb7f62a8948Alexandre Passos  Raises:
22456ceca431454635e8ea456cb35f9aeb7f62a8948Alexandre Passos    ValueError: if eager execution is enabled.
225b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  """
226b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  layer = MaxPooling1D(pool_size=pool_size,
227b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                       strides=strides,
228b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                       padding=padding,
229b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                       data_format=data_format,
230b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                       name=name)
231b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  return layer.apply(inputs)
232b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
233b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
2341e3e5d424eaa6332314f8ad1d54089eb0f9e02e7Francois Cholletclass _Pooling2D(base.Layer):
235b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  """Pooling layer for arbitrary pooling functions, for 2D inputs (e.g. images).
236b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
237b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  This class only exists for code reuse. It will never be an exposed API.
238b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
239b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  Arguments:
240b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    pool_function: The pooling function to apply, e.g. `tf.nn.max_pool`.
241b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    pool_size: An integer or tuple/list of 2 integers: (pool_height, pool_width)
242b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      specifying the size of the pooling window.
243b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Can be a single integer to specify the same value for
244b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      all spatial dimensions.
245b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    strides: An integer or tuple/list of 2 integers,
246b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      specifying the strides of the pooling operation.
247b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Can be a single integer to specify the same value for
248b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      all spatial dimensions.
249b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    padding: A string. The padding method, either 'valid' or 'same'.
250b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Case-insensitive.
251b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    data_format: A string, one of `channels_last` (default) or `channels_first`.
252b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      The ordering of the dimensions in the inputs.
253b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `channels_last` corresponds to inputs with shape
254b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `(batch, height, width, channels)` while `channels_first` corresponds to
255b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      inputs with shape `(batch, channels, height, width)`.
256b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    name: A string, the name of the layer.
257b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  """
258b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
259b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  def __init__(self, pool_function, pool_size, strides,
260b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower               padding='valid', data_format='channels_last',
261b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower               name=None, **kwargs):
262b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    super(_Pooling2D, self).__init__(name=name, **kwargs)
263b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    self.pool_function = pool_function
264b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    self.pool_size = utils.normalize_tuple(pool_size, 2, 'pool_size')
265b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    self.strides = utils.normalize_tuple(strides, 2, 'strides')
266b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    self.padding = utils.normalize_padding(padding)
267b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    self.data_format = utils.normalize_data_format(data_format)
26835253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet    self.input_spec = base.InputSpec(ndim=4)
269b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
270b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  def call(self, inputs):
271a5909d64320a9dfd940b298bcb0bd758e514a04fToby Boyd    if self.data_format == 'channels_last':
272b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      pool_shape = (1,) + self.pool_size + (1,)
273b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      strides = (1,) + self.strides + (1,)
274b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    else:
275b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      pool_shape = (1, 1) + self.pool_size
276b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      strides = (1, 1) + self.strides
27735253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet    outputs = self.pool_function(
278b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        inputs,
279b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        ksize=pool_shape,
280b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        strides=strides,
281b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        padding=self.padding.upper(),
282a5909d64320a9dfd940b298bcb0bd758e514a04fToby Boyd        data_format=utils.convert_data_format(self.data_format, 4))
28335253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet    return outputs
28435253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet
285e4fbe7c2236d350e02f85eb6a58fa0dfa466ad5eFrancois Chollet  def compute_output_shape(self, input_shape):
28635253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet    input_shape = tensor_shape.TensorShape(input_shape).as_list()
28735253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet    if self.data_format == 'channels_first':
28835253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet      rows = input_shape[2]
28935253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet      cols = input_shape[3]
29035253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet    else:
29135253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet      rows = input_shape[1]
29235253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet      cols = input_shape[2]
29335253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet    rows = utils.conv_output_length(rows, self.pool_size[0], self.padding,
29435253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet                                    self.strides[0])
29535253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet    cols = utils.conv_output_length(cols, self.pool_size[1], self.padding,
29635253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet                                    self.strides[1])
29735253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet    if self.data_format == 'channels_first':
29835253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet      return tensor_shape.TensorShape(
29935253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet          [input_shape[0], input_shape[1], rows, cols])
30035253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet    else:
30135253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet      return tensor_shape.TensorShape(
30235253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet          [input_shape[0], rows, cols, input_shape[3]])
303b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
304b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
305fa3fb289ba6a1718f9c76b2277a58f95f5e878abAnna R@tf_export('layers.AveragePooling2D')
306b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlowerclass AveragePooling2D(_Pooling2D):
307b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  """Average pooling layer for 2D inputs (e.g. images).
308b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
309b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  Arguments:
310b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    pool_size: An integer or tuple/list of 2 integers: (pool_height, pool_width)
311b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      specifying the size of the pooling window.
312b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Can be a single integer to specify the same value for
313b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      all spatial dimensions.
314b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    strides: An integer or tuple/list of 2 integers,
315b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      specifying the strides of the pooling operation.
316b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Can be a single integer to specify the same value for
317b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      all spatial dimensions.
318b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    padding: A string. The padding method, either 'valid' or 'same'.
319b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Case-insensitive.
320b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    data_format: A string. The ordering of the dimensions in the inputs.
321b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `channels_last` (default) and `channels_first` are supported.
322b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `channels_last` corresponds to inputs with shape
323bc456e361d49d1d89a74b80060c70efb51fd7d87Martin Wicke      `(batch, height, width, channels)` while `channels_first` corresponds to
324b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      inputs with shape `(batch, channels, height, width)`.
325b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    name: A string, the name of the layer.
326b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  """
327b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
328b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  def __init__(self, pool_size, strides,
329b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower               padding='valid', data_format='channels_last',
330b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower               name=None, **kwargs):
331b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    super(AveragePooling2D, self).__init__(
332b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        nn.avg_pool,
333b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        pool_size=pool_size, strides=strides,
334b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        padding=padding, data_format=data_format, name=name, **kwargs)
335b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
336b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
337fa3fb289ba6a1718f9c76b2277a58f95f5e878abAnna R@tf_export('layers.average_pooling2d')
338b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlowerdef average_pooling2d(inputs,
339b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                      pool_size, strides,
340b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                      padding='valid', data_format='channels_last',
341b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                      name=None):
342b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  """Average pooling layer for 2D inputs (e.g. images).
343b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
344b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  Arguments:
345b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    inputs: The tensor over which to pool. Must have rank 4.
346b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    pool_size: An integer or tuple/list of 2 integers: (pool_height, pool_width)
347b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      specifying the size of the pooling window.
348b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Can be a single integer to specify the same value for
349b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      all spatial dimensions.
350b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    strides: An integer or tuple/list of 2 integers,
351b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      specifying the strides of the pooling operation.
352b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Can be a single integer to specify the same value for
353b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      all spatial dimensions.
354b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    padding: A string. The padding method, either 'valid' or 'same'.
355b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Case-insensitive.
356b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    data_format: A string. The ordering of the dimensions in the inputs.
357b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `channels_last` (default) and `channels_first` are supported.
358b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `channels_last` corresponds to inputs with shape
359bc456e361d49d1d89a74b80060c70efb51fd7d87Martin Wicke      `(batch, height, width, channels)` while `channels_first` corresponds to
360b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      inputs with shape `(batch, channels, height, width)`.
361b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    name: A string, the name of the layer.
362b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
363b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  Returns:
364b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    Output tensor.
36556ceca431454635e8ea456cb35f9aeb7f62a8948Alexandre Passos
36656ceca431454635e8ea456cb35f9aeb7f62a8948Alexandre Passos  Raises:
36756ceca431454635e8ea456cb35f9aeb7f62a8948Alexandre Passos    ValueError: if eager execution is enabled.
368b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  """
369b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  layer = AveragePooling2D(pool_size=pool_size, strides=strides,
370b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                           padding=padding, data_format=data_format,
371b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                           name=name)
372b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  return layer.apply(inputs)
373b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
374b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
375fa3fb289ba6a1718f9c76b2277a58f95f5e878abAnna R@tf_export('layers.MaxPooling2D')
376b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlowerclass MaxPooling2D(_Pooling2D):
377b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  """Max pooling layer for 2D inputs (e.g. images).
378b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
379b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  Arguments:
380b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    pool_size: An integer or tuple/list of 2 integers: (pool_height, pool_width)
381b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      specifying the size of the pooling window.
382b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Can be a single integer to specify the same value for
383b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      all spatial dimensions.
384b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    strides: An integer or tuple/list of 2 integers,
385b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      specifying the strides of the pooling operation.
386b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Can be a single integer to specify the same value for
387b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      all spatial dimensions.
388b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    padding: A string. The padding method, either 'valid' or 'same'.
389b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Case-insensitive.
390b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    data_format: A string. The ordering of the dimensions in the inputs.
391b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `channels_last` (default) and `channels_first` are supported.
392b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `channels_last` corresponds to inputs with shape
393b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `(batch, height, width, channels)` while `channels_first` corresponds to
394b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      inputs with shape `(batch, channels, height, width)`.
395b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    name: A string, the name of the layer.
396b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  """
397b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
398b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  def __init__(self, pool_size, strides,
399b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower               padding='valid', data_format='channels_last',
400b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower               name=None, **kwargs):
401b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    super(MaxPooling2D, self).__init__(
402b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        nn.max_pool,
403b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        pool_size=pool_size, strides=strides,
404b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        padding=padding, data_format=data_format, name=name, **kwargs)
405b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
406b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
407fa3fb289ba6a1718f9c76b2277a58f95f5e878abAnna R@tf_export('layers.max_pooling2d')
408b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlowerdef max_pooling2d(inputs,
409b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                  pool_size, strides,
410b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                  padding='valid', data_format='channels_last',
411b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                  name=None):
412b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  """Max pooling layer for 2D inputs (e.g. images).
413b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
414b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  Arguments:
415b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    inputs: The tensor over which to pool. Must have rank 4.
416b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    pool_size: An integer or tuple/list of 2 integers: (pool_height, pool_width)
417b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      specifying the size of the pooling window.
418b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Can be a single integer to specify the same value for
419b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      all spatial dimensions.
420b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    strides: An integer or tuple/list of 2 integers,
421b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      specifying the strides of the pooling operation.
422b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Can be a single integer to specify the same value for
423b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      all spatial dimensions.
424b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    padding: A string. The padding method, either 'valid' or 'same'.
425b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Case-insensitive.
426b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    data_format: A string. The ordering of the dimensions in the inputs.
427b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `channels_last` (default) and `channels_first` are supported.
428b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `channels_last` corresponds to inputs with shape
429b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `(batch, height, width, channels)` while `channels_first` corresponds to
430b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      inputs with shape `(batch, channels, height, width)`.
431b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    name: A string, the name of the layer.
432b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
433b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  Returns:
434b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    Output tensor.
43556ceca431454635e8ea456cb35f9aeb7f62a8948Alexandre Passos
43656ceca431454635e8ea456cb35f9aeb7f62a8948Alexandre Passos  Raises:
43756ceca431454635e8ea456cb35f9aeb7f62a8948Alexandre Passos    ValueError: if eager execution is enabled.
438b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  """
439b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  layer = MaxPooling2D(pool_size=pool_size, strides=strides,
440b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                       padding=padding, data_format=data_format,
441b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                       name=name)
442b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  return layer.apply(inputs)
443b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
444b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
4451e3e5d424eaa6332314f8ad1d54089eb0f9e02e7Francois Cholletclass _Pooling3D(base.Layer):
446b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  """Pooling layer for arbitrary pooling functions, for 3D inputs.
447b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
448b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  This class only exists for code reuse. It will never be an exposed API.
449b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
450b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  Arguments:
451b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    pool_function: The pooling function to apply, e.g. `tf.nn.max_pool`.
452b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    pool_size: An integer or tuple/list of 3 integers:
453b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      (pool_depth, pool_height, pool_width)
454b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      specifying the size of the pooling window.
455b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Can be a single integer to specify the same value for
456b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      all spatial dimensions.
457b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    strides: An integer or tuple/list of 3 integers,
458b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      specifying the strides of the pooling operation.
459b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Can be a single integer to specify the same value for
460b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      all spatial dimensions.
461b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    padding: A string. The padding method, either 'valid' or 'same'.
462b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Case-insensitive.
463b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    data_format: A string, one of `channels_last` (default) or `channels_first`.
464b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      The ordering of the dimensions in the inputs.
465b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `channels_last` corresponds to inputs with shape
466b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `(batch, depth, height, width, channels)`
467b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      while `channels_first` corresponds to
468b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      inputs with shape `(batch, channels, depth, height, width)`.
469b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    name: A string, the name of the layer.
470b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  """
471b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
472b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  def __init__(self, pool_function, pool_size, strides,
473b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower               padding='valid', data_format='channels_last',
474b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower               name=None, **kwargs):
475b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    super(_Pooling3D, self).__init__(name=name, **kwargs)
476b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    self.pool_function = pool_function
477b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    self.pool_size = utils.normalize_tuple(pool_size, 3, 'pool_size')
478b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    self.strides = utils.normalize_tuple(strides, 3, 'strides')
479b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    self.padding = utils.normalize_padding(padding)
480b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    self.data_format = utils.normalize_data_format(data_format)
48135253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet    self.input_spec = base.InputSpec(ndim=5)
482b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
483b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  def call(self, inputs):
484b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    pool_shape = (1,) + self.pool_size + (1,)
485b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    strides = (1,) + self.strides + (1,)
486b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
487b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    if self.data_format == 'channels_first':
48835253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet      # TF does not support `channels_first` with 3D pooling operations,
489b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      # so we must handle this case manually.
49035253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet      # TODO(fchollet): remove this when TF pooling is feature-complete.
491b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      inputs = array_ops.transpose(inputs, (0, 2, 3, 4, 1))
492b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
493b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    outputs = self.pool_function(
494b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        inputs,
495b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        ksize=pool_shape,
496b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        strides=strides,
497b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        padding=self.padding.upper())
498b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
499b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    if self.data_format == 'channels_first':
500b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      outputs = array_ops.transpose(outputs, (0, 4, 1, 2, 3))
501b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    return outputs
502b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
503e4fbe7c2236d350e02f85eb6a58fa0dfa466ad5eFrancois Chollet  def compute_output_shape(self, input_shape):
50435253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet    input_shape = tensor_shape.TensorShape(input_shape).as_list()
50535253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet    if self.data_format == 'channels_first':
50635253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet      len_dim1 = input_shape[2]
50735253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet      len_dim2 = input_shape[3]
50835253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet      len_dim3 = input_shape[4]
50935253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet    else:
51035253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet      len_dim1 = input_shape[1]
51135253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet      len_dim2 = input_shape[2]
51235253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet      len_dim3 = input_shape[3]
51335253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet    len_dim1 = utils.conv_output_length(len_dim1, self.pool_size[0],
51435253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet                                        self.padding, self.strides[0])
51535253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet    len_dim2 = utils.conv_output_length(len_dim2, self.pool_size[1],
51635253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet                                        self.padding, self.strides[1])
51735253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet    len_dim3 = utils.conv_output_length(len_dim3, self.pool_size[2],
51835253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet                                        self.padding, self.strides[2])
51935253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet    if self.data_format == 'channels_first':
52035253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet      return tensor_shape.TensorShape(
52135253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet          [input_shape[0], input_shape[1], len_dim1, len_dim2, len_dim3])
52235253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet    else:
52335253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet      return tensor_shape.TensorShape(
52435253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet          [input_shape[0], len_dim1, len_dim2, len_dim3, input_shape[4]])
52535253fa89c5f8af25e3d84f76980729569091a6cFrancois Chollet
526b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
527fa3fb289ba6a1718f9c76b2277a58f95f5e878abAnna R@tf_export('layers.AveragePooling3D')
528b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlowerclass AveragePooling3D(_Pooling3D):
529b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  """Average pooling layer for 3D inputs (e.g. volumes).
530b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
531b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  Arguments:
532b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    pool_size: An integer or tuple/list of 3 integers:
533b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      (pool_depth, pool_height, pool_width)
534b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      specifying the size of the pooling window.
535b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Can be a single integer to specify the same value for
536b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      all spatial dimensions.
537b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    strides: An integer or tuple/list of 3 integers,
538b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      specifying the strides of the pooling operation.
539b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Can be a single integer to specify the same value for
540b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      all spatial dimensions.
541b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    padding: A string. The padding method, either 'valid' or 'same'.
542b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Case-insensitive.
543b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    data_format: A string. The ordering of the dimensions in the inputs.
544b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `channels_last` (default) and `channels_first` are supported.
545b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `channels_last` corresponds to inputs with shape
546b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `(batch, depth, height, width, channels)` while `channels_first`
547b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      corresponds to inputs with shape
548b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `(batch, channels, depth, height, width)`.
549b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    name: A string, the name of the layer.
550b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  """
551b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
552b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  def __init__(self, pool_size, strides,
553b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower               padding='valid', data_format='channels_last',
554b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower               name=None, **kwargs):
555b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    super(AveragePooling3D, self).__init__(
556b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        nn.avg_pool3d,
557b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        pool_size=pool_size, strides=strides,
558b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        padding=padding, data_format=data_format, name=name, **kwargs)
559b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
560b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
561fa3fb289ba6a1718f9c76b2277a58f95f5e878abAnna R@tf_export('layers.average_pooling3d')
562b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlowerdef average_pooling3d(inputs,
563b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                      pool_size, strides,
564b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                      padding='valid', data_format='channels_last',
565b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                      name=None):
566b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  """Average pooling layer for 3D inputs (e.g. volumes).
567b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
568b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  Arguments:
569b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    inputs: The tensor over which to pool. Must have rank 5.
570b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    pool_size: An integer or tuple/list of 3 integers:
571b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      (pool_depth, pool_height, pool_width)
572b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      specifying the size of the pooling window.
573b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Can be a single integer to specify the same value for
574b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      all spatial dimensions.
575b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    strides: An integer or tuple/list of 3 integers,
576b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      specifying the strides of the pooling operation.
577b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Can be a single integer to specify the same value for
578b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      all spatial dimensions.
579b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    padding: A string. The padding method, either 'valid' or 'same'.
580b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Case-insensitive.
581b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    data_format: A string. The ordering of the dimensions in the inputs.
582b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `channels_last` (default) and `channels_first` are supported.
583b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `channels_last` corresponds to inputs with shape
584b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `(batch, depth, height, width, channels)` while `channels_first`
585b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      corresponds to inputs with shape
586b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `(batch, channels, depth, height, width)`.
587b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    name: A string, the name of the layer.
588b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
589b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  Returns:
590b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    Output tensor.
59156ceca431454635e8ea456cb35f9aeb7f62a8948Alexandre Passos
59256ceca431454635e8ea456cb35f9aeb7f62a8948Alexandre Passos  Raises:
59356ceca431454635e8ea456cb35f9aeb7f62a8948Alexandre Passos    ValueError: if eager execution is enabled.
594b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  """
595b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  layer = AveragePooling3D(pool_size=pool_size, strides=strides,
596b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                           padding=padding, data_format=data_format,
597b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                           name=name)
598b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  return layer.apply(inputs)
599b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
600b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
601fa3fb289ba6a1718f9c76b2277a58f95f5e878abAnna R@tf_export('layers.MaxPooling3D')
602b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlowerclass MaxPooling3D(_Pooling3D):
603b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  """Max pooling layer for 3D inputs (e.g. volumes).
604b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
605b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  Arguments:
606b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    pool_size: An integer or tuple/list of 3 integers:
607b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      (pool_depth, pool_height, pool_width)
608b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      specifying the size of the pooling window.
609b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Can be a single integer to specify the same value for
610b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      all spatial dimensions.
611b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    strides: An integer or tuple/list of 3 integers,
612b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      specifying the strides of the pooling operation.
613b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Can be a single integer to specify the same value for
614b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      all spatial dimensions.
615b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    padding: A string. The padding method, either 'valid' or 'same'.
616b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Case-insensitive.
617b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    data_format: A string. The ordering of the dimensions in the inputs.
618b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `channels_last` (default) and `channels_first` are supported.
619b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `channels_last` corresponds to inputs with shape
620b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `(batch, depth, height, width, channels)` while `channels_first`
621b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      corresponds to inputs with shape
622b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `(batch, channels, depth, height, width)`.
623b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    name: A string, the name of the layer.
624b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  """
625b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
626b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  def __init__(self, pool_size, strides,
627b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower               padding='valid', data_format='channels_last',
628b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower               name=None, **kwargs):
629b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    super(MaxPooling3D, self).__init__(
630b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        nn.max_pool3d,
631b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        pool_size=pool_size, strides=strides,
632b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower        padding=padding, data_format=data_format, name=name, **kwargs)
633b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
634b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
635fa3fb289ba6a1718f9c76b2277a58f95f5e878abAnna R@tf_export('layers.max_pooling3d')
636b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlowerdef max_pooling3d(inputs,
637b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                  pool_size, strides,
638b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                  padding='valid', data_format='channels_last',
639b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                  name=None):
640b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  """Max pooling layer for 3D inputs (e.g. volumes).
641b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
642b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  Arguments:
643b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    inputs: The tensor over which to pool. Must have rank 5.
644b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    pool_size: An integer or tuple/list of 3 integers:
645b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      (pool_depth, pool_height, pool_width)
646b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      specifying the size of the pooling window.
647b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Can be a single integer to specify the same value for
648b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      all spatial dimensions.
649b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    strides: An integer or tuple/list of 3 integers,
650b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      specifying the strides of the pooling operation.
651b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Can be a single integer to specify the same value for
652b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      all spatial dimensions.
653b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    padding: A string. The padding method, either 'valid' or 'same'.
654b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      Case-insensitive.
655b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    data_format: A string. The ordering of the dimensions in the inputs.
656b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `channels_last` (default) and `channels_first` are supported.
657b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `channels_last` corresponds to inputs with shape
658b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `(batch, depth, height, width, channels)` while `channels_first`
659b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      corresponds to inputs with shape
660b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower      `(batch, channels, depth, height, width)`.
661b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    name: A string, the name of the layer.
662b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
663b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  Returns:
664b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower    Output tensor.
66556ceca431454635e8ea456cb35f9aeb7f62a8948Alexandre Passos
66656ceca431454635e8ea456cb35f9aeb7f62a8948Alexandre Passos  Raises:
66756ceca431454635e8ea456cb35f9aeb7f62a8948Alexandre Passos    ValueError: if eager execution is enabled.
668b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  """
669b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  layer = MaxPooling3D(pool_size=pool_size, strides=strides,
670b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                       padding=padding, data_format=data_format,
671b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower                       name=name)
672b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower  return layer.apply(inputs)
673b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
674b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower# Aliases
675b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlower
676b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlowerAvgPool2D = AveragePooling2D
677b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlowerMaxPool2D = MaxPooling2D
678b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFlowermax_pool2d = max_pooling2d
679b2970a8251d2a81f03e862c83bc3a4ffc41ef02dA. Unique TensorFloweravg_pool2d = average_pooling2d
680