class_docstr: Tests for FractionalAvgPoolGrad.
  
  Two types of tests for FractionalAvgPoolGrad.
  1) Test fractional_avg_pool_grad() directly.
    This type of test relies on gen_nn_ops.avg_pool_grad() returns the
  correct result. For example:
    * input_tensor_shape = (1, 10, 10, 1)
    * window_size = (1, 2, 2, 1)
    * stride_size = (1, 2, 2, 1)
    * padding: not really important, since 10/2 is divisible
  avg pooling should generate the same result as fractional avg pooling with:
    * row_sequence = [0, 2, 4, 6, 8, 10]
    * col_sequence = [0, 2, 4, 6, 8, 10]
    * overlapping = False
  This also means their gradients in such case will be the same.
  
  Similarly, when
    * input_tensor_shape = (1, 7, 7, 1)
    * window_size = (1, 3, 3, 1)
    * stride_size = (1, 2, 2, 1)
    * padding: not important
  avg pooling should generate the same result as fractional avg pooling with:
    * row_sequence = [0, 2, 4, 7]
    * col_sequence = [0, 2, 4, 7]
    * overlapping = True
  2) Test through compute_gradient_error()
code: def testInvalidSeqRaiseErrorForFractionalAvgPoolGrad(self):
      with self.assertRaises((errors.InvalidArgumentError, ValueError)):
          with self.cached_session() as _:
              overlapping = True
              orig_input_tensor_shape = constant_op.constant(
                  -1879048192, shape=[4], dtype=dtypes.int64
              )
              out_backprop = constant_op.constant(
                  [], shape=[0, 0, 0, 0], dtype=dtypes.float64
              )
              row_pooling_sequence = constant_op.constant(
                  1, shape=[4], dtype=dtypes.int64
              )
              col_pooling_sequence = constant_op.constant(
                  1, shape=[4], dtype=dtypes.int64
              )
              t = gen_nn_ops.fractional_avg_pool_grad(
                  orig_input_tensor_shape=orig_input_tensor_shape,
                  out_backprop=out_backprop,
                  row_pooling_sequence=row_pooling_sequence,
                  col_pooling_sequence=col_pooling_sequence,
                  overlapping=overlapping,
              )
              self.evaluate(t)
  
imports: import math
  import numpy
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import errors
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import gen_nn_ops
  from tensorflow.python.ops import gradient_checker
  from tensorflow.python.ops import nn_ops
  import tensorflow.python.ops.nn_grad
  from tensorflow.python.platform import test
label_desc: Use image node_id 7 for calling the FractionalAvgPoolGradTest obj's underlying member method code with example usage: obj.testInvalidSeqRaiseErrorForFractionalAvgPoolGrad() without return types