Example #1
0
    def testMaxPoolGradEagerShapeErrors(self):
        with context.eager_mode():
            orig_in = array_ops.ones((1, 1, 1, 1, 1))

            # Test invalid orig_out shape
            orig_out = array_ops.ones((1, 1, 1, 1, 2))
            grad = array_ops.ones((1, 1, 1, 1, 1))
            with self.assertRaisesRegex(
                    errors_impl.InvalidArgumentError,
                    r"Expected orig_output shape to be \[1,1,1,1,1\], but got "
                    r"\[1,1,1,1,2\]"):
                gen_nn_ops.max_pool3d_grad(orig_in,
                                           orig_out,
                                           grad,
                                           ksize=[1, 1, 1, 1, 1],
                                           strides=[1, 1, 1, 1, 1],
                                           padding="VALID")
            with self.assertRaisesRegex(
                    errors_impl.InvalidArgumentError,
                    r"Expected orig_output shape to be \[1,1,1,1,1\], but got "
                    r"\[1,1,1,1,2\]"):
                gen_nn_ops.max_pool3d_grad_grad(orig_in,
                                                orig_out,
                                                grad,
                                                ksize=[1, 1, 1, 1, 1],
                                                strides=[1, 1, 1, 1, 1],
                                                padding="VALID")

            # Test invalid grad shape
            orig_out = array_ops.ones((1, 1, 1, 1, 1))
            grad = array_ops.ones((1, 1, 1, 1, 2))
            with self.assertRaisesRegex(
                    errors_impl.InvalidArgumentError,
                    r"Expected grad shape to be \[1,1,1,1,1\], but got \[1,1,1,1,2\]"
            ):
                gen_nn_ops.max_pool3d_grad(orig_in,
                                           orig_out,
                                           grad,
                                           ksize=[1, 1, 1, 1, 1],
                                           strides=[1, 1, 1, 1, 1],
                                           padding="VALID")
            with self.assertRaisesRegex(
                    errors_impl.InvalidArgumentError,
                    r"Expected grad shape to be \[1,1,1,1,1\], but got \[1,1,1,1,2\]"
            ):
                gen_nn_ops.max_pool3d_grad_grad(orig_in,
                                                orig_out,
                                                grad,
                                                ksize=[1, 1, 1, 1, 1],
                                                strides=[1, 1, 1, 1, 1],
                                                padding="VALID")
Example #2
0
def _MaxPool3DGrad(op, grad):
    return gen_nn_ops.max_pool3d_grad(op.inputs[0],
                                      op.outputs[0],
                                      grad,
                                      ksize=op.get_attr("ksize"),
                                      strides=op.get_attr("strides"),
                                      padding=op.get_attr("padding"),
                                      data_format=op.get_attr("data_format"))
Example #3
0
def _MaxPool3DGrad(op, grad):
  return gen_nn_ops.max_pool3d_grad(
      op.inputs[0],
      op.outputs[0],
      grad,
      ksize=op.get_attr("ksize"),
      strides=op.get_attr("strides"),
      padding=op.get_attr("padding"),
      data_format=op.get_attr("data_format").decode())
Example #4
0
def _MaxPool3DGradGradGrad(op, grad):
    return (array_ops.zeros_like(op.inputs[0]),
            array_ops.zeros_like(op.inputs[1]),
            gen_nn_ops.max_pool3d_grad(
                op.inputs[0],
                op.inputs[1],
                grad,
                op.get_attr("ksize"),
                op.get_attr("strides"),
                padding=op.get_attr("padding"),
                data_format=op.get_attr("data_format").decode()))
Example #5
0
def _MaxPool3DGradGradGrad(op, grad):
    return (array_ops.zeros(shape=array_ops.shape(op.inputs[0]),
                            dtype=op.inputs[0].dtype),
            array_ops.zeros(shape=array_ops.shape(op.inputs[1]),
                            dtype=op.inputs[1].dtype),
            gen_nn_ops.max_pool3d_grad(op.inputs[0],
                                       op.inputs[1],
                                       grad,
                                       op.get_attr("ksize"),
                                       op.get_attr("strides"),
                                       padding=op.get_attr("padding"),
                                       data_format=op.get_attr("data_format")))
Example #6
0
def _MaxPool3DGradGradGrad(op, grad):
  return (array_ops.zeros(
      shape=array_ops.shape(op.inputs[0]), dtype=op.inputs[0].dtype),
          array_ops.zeros(
              shape=array_ops.shape(op.inputs[1]), dtype=op.inputs[1].dtype),
          gen_nn_ops.max_pool3d_grad(
              op.inputs[0],
              op.inputs[1],
              grad,
              op.get_attr("ksize"),
              op.get_attr("strides"),
              padding=op.get_attr("padding"),
              data_format=op.get_attr("data_format").decode()))
def _z_dtd(layer, R, parameter1, parameter2):
    print('_maxpooling3d_z_dtd')

    Z = layer.output + 1e-12
    S = R / Z
    C = gen_nn_ops.max_pool3d_grad(
        layer.input,
        Z,
        S,
        ksize=(1, ) + layer.pool_size + (1, ),
        strides=(1, ) + layer.strides + (1, ),
        padding=K.tensorflow_backend._preprocess_padding(layer.padding))
    return layer.input * C