'Create a cell with added input and/or output dropout.
Dropout is never used on the state.
Arguments:
cell: an RNNCell, a projection to output_size is added to it.
input_keep_prob: unit Tensor or float between 0 and 1, input keep
probability; if it is float and 1, no input dropout will be added.
output_keep_prob: unit Tensor or float between 0 and 1, output keep
probability; if it is float and 1, no output dropout will be added.
seed: (optional) integer, the randomness seed.
Raises:
TypeError: if cell is not an RNNCell.
ValueError: if keep_prob is not between 0 and 1.'

def __init__(self, cell, input_keep_prob=1.0, output_keep_prob=1.0, seed=None):

    if (not isinstance(cell, core_rnn_cell.RNNCell)):
        raise TypeError('The    parameter    cell    is    not    a    RNNCell.')
    if (isinstance(input_keep_prob, float) and (not ((input_keep_prob >= 0.0) and (input_keep_prob <= 1.0)))):
        raise ValueError(('Parameter    input_keep_prob    must    be    between    0    and    1:    %d' % input_keep_prob))
    if (isinstance(output_keep_prob, float) and (not ((output_keep_prob >= 0.0) and (output_keep_prob <= 1.0)))):
        raise ValueError(('Parameter    output_keep_prob    must    be    between    0    and    1:    %d' % output_keep_prob))
    self._cell = cell
    self._input_keep_prob = input_keep_prob
    self._output_keep_prob = output_keep_prob
    self._seed = seed
