code: def _compute_shape(self, input_shape):
      shape_to_return = [None]
      if input_shape is None or input_shape[1] is None:
          shape_to_return += [None]
      else:
          if self.padding == PaddingMode.valid:
              # overhands are excluded
              shape_to_return.append(
                  1
                  + int(
                      (input_shape[1] - self.pool_length) / self.stride
                  )
              )
          elif self.padding == PaddingMode.same:
              shape_to_return.append(
                  int((input_shape[1] + self.stride - 1) / self.stride)
              )
          else:
              raise RuntimeError(
                  "Please implement shape inference for"
                  " padding mode: " + str(self.padding)
              )
      shape_to_return.append(input_shape[-1])  # channels unchanged
      return shape_to_return
  
imports: from __future__ import division
  from __future__ import print_function
  from __future__ import absolute_import
  from .core import *
  from .helper_functions import conv1d_transpose_via_conv2d
  from .convolutional import PaddingMode, DataFormat
  from .None import helper_functions
  import tensorflow
  from tensorflow.python.ops import nn_grad
label_desc: Use image node_id 2 for calling the Pool1D obj's underlying member method code with example usage: obj._compute_shape(input_shape) and returns: shape_to_return