def METHOD_NAME(self, inputs, state):
    input_dim = inputs.get_shape()[-1]
    assert input_dim is not None, "input dimension must be defined"
    W = tf.get_variable(
        name="W", shape=[input_dim, 3 * self._num_units], dtype=tf.float32)
    U = tf.get_variable(
        name='U', shape=[self._num_units, 3 * self._num_units], dtype=tf.float32)
    b = tf.get_variable(
        name='b', shape=[1, 3 * self._num_units], dtype=tf.float32)
    xw = tf.split(tf.matmul(inputs, W) + b, 3, 1)
    hu = tf.split(tf.matmul(state, U), 3, 1)
    r = tf.sigmoid(xw[0] + hu[0])
    z = tf.sigmoid(xw[1] + hu[1])
    h1 = self._activation(xw[2] + r * hu[2])
    next_h = h1 * (1 - z) + state * z
    return next_h, next_h