Add __repr__ to Avgpool and maxunpool layers (#2047)

diff --git a/torch/nn/modules/pooling.py b/torch/nn/modules/pooling.py
index f92ff64..fe3470d 100644
--- a/torch/nn/modules/pooling.py
+++ b/torch/nn/modules/pooling.py
@@ -228,6 +228,12 @@
         return F.max_unpool1d(input, indices, self.kernel_size, self.stride,
                               self.padding, output_size)
 
+    def __repr__(self):
+        return self.__class__.__name__ + ' (' \
+            + 'size=' + str(self.kernel_size) \
+            + ', stride=' + str(self.stride) \
+            + ', padding=' + str(self.padding) + ')'
+
 
 class MaxUnpool2d(Module):
     r"""Computes a partial inverse of :class:`MaxPool2d`.
@@ -303,6 +309,12 @@
         return F.max_unpool2d(input, indices, self.kernel_size, self.stride,
                               self.padding, output_size)
 
+    def __repr__(self):
+        return self.__class__.__name__ + ' (' \
+            + 'size=' + str(self.kernel_size) \
+            + ', stride=' + str(self.stride) \
+            + ', padding=' + str(self.padding) + ')'
+
 
 class MaxUnpool3d(Module):
     r"""Computes a partial inverse of :class:`MaxPool3d`.
@@ -358,6 +370,12 @@
         return F.max_unpool3d(input, indices, self.kernel_size, self.stride,
                               self.padding, output_size)
 
+    def __repr__(self):
+        return self.__class__.__name__ + ' (' \
+            + 'size=' + str(self.kernel_size) \
+            + ', stride=' + str(self.stride) \
+            + ', padding=' + str(self.padding) + ')'
+
 
 class AvgPool1d(Module):
     r"""Applies a 1D average pooling over an input signal composed of several
@@ -417,6 +435,14 @@
             input, self.kernel_size, self.stride, self.padding, self.ceil_mode,
             self.count_include_pad)
 
+    def __repr__(self):
+        return self.__class__.__name__ + ' (' \
+            + 'size=' + str(self.kernel_size) \
+            + ', stride=' + str(self.stride) \
+            + ', padding=' + str(self.padding) \
+            + ', ceil_mode=' + str(self.ceil_mode) \
+            + ', count_include_pad=' + str(self.count_include_pad) + ')'
+
 
 class AvgPool2d(Module):
     r"""Applies a 2D average pooling over an input signal composed of several input
@@ -478,6 +504,14 @@
         return F.avg_pool2d(input, self.kernel_size, self.stride,
                             self.padding, self.ceil_mode, self.count_include_pad)
 
+    def __repr__(self):
+        return self.__class__.__name__ + ' (' \
+            + 'size=' + str(self.kernel_size) \
+            + ', stride=' + str(self.stride) \
+            + ', padding=' + str(self.padding) \
+            + ', ceil_mode=' + str(self.ceil_mode) \
+            + ', count_include_pad=' + str(self.count_include_pad) + ')'
+
 
 class MaxPool3d(Module):
     r"""Applies a 3D max pooling over an input signal composed of several input
@@ -608,6 +642,11 @@
     def forward(self, input):
         return F.avg_pool3d(input, self.kernel_size, self.stride)
 
+    def __repr__(self):
+        return self.__class__.__name__ + ' (' \
+            + 'size=' + str(self.kernel_size) \
+            + ', stride=' + str(self.stride) + ')'
+
 
 class FractionalMaxPool2d(Module):
     """Applies a 2D fractional max pooling over an input signal composed of several input planes.