def _MaxPoolGradGrad(op, grad): return (array_ops.zeros_like(op.inputs[0]), array_ops.zeros_like(op.inputs[1]), gen_nn_ops.max_pool_grad_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")))
def _MaxPoolGradGrad(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_pool_grad_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")))
def maxpool_forward(op, r_input): with tf.name_scope('maxpool_forward'): data_format = op.get_attr('data_format') padding = op.get_attr('padding') strides = op.get_attr('strides') ksize = op.get_attr('ksize') return [ max_pool_grad_grad(op.inputs[0], op.outputs[0], r_input[0], data_format=data_format, padding=padding, strides=strides, ksize=ksize) ]