def __init__(self, num_layers, num_units, input_mode=CUDNN_INPUT_LINEAR_MODE, direction=CUDNN_RNN_UNIDIRECTION, dropout=0., seed=None, dtype=dtypes.float32, kernel_initializer=None, bias_initializer=None, name=None): """Creates a CudnnRNN model from model spec. Args: num_layers: the number of layers for the RNN model. num_units: the number of units within the RNN model. input_mode: indicate whether there is a linear projection between the input and the actual computation before the first layer. It can be 'linear_input', 'skip_input' or 'auto_select'. 'linear_input' (default) always applies a linear projection of input onto RNN hidden state. (standard RNN behavior). 'skip_input' is only allowed when input_size == num_units; 'auto_select' implies 'skip_input' when input_size == num_units; otherwise, it implies 'linear_input'. direction: the direction model that the model operates. Can be either 'unidirectional' or 'bidirectional' dropout: dropout rate, a number between [0, 1]. Dropout is applied on inputs of each layer. When set to 0, dropout is disabled. seed: the op seed used for initializing dropout. See @{tf.set_random_seed} for behavior. dtype: tf.float32 or tf.float64 kernel_initializer: starting value to initialize the weight. bias_initializer: starting value to initialize the bias (default is all zeros). name: VariableScope for the created subgraph; defaults to class name. This only serves the default scope if later no scope is specified when invoking __call__(). Raises: ValueError: if direction is invalid. Or dtype is not supported. """ super(_CudnnRNN, self).__init__(dtype=dtype, name=name) cudnn_rnn_ops.check_direction(direction) cudnn_rnn_ops.check_input_mode(input_mode) if dtype not in [dtypes.float32, dtypes.float64]: raise ValueError("Only support float32, float64, provided %s" % dtype) # Layer self.dtype is type name, the original DType object is kept here. self._plain_dtype = dtype self._num_layers = num_layers self._num_units = num_units self._input_mode = input_mode self._direction = direction self._dropout = dropout self._seed = seed self._kernel_initializer = kernel_initializer self._bias_initializer = bias_initializer # Init input_size to None, which will be set after build(). self._input_size = None self._saveable = None
def __init__(self, num_layers, num_units, input_mode=CUDNN_INPUT_LINEAR_MODE, direction=CUDNN_RNN_UNIDIRECTION, dropout=0., seed=None, dtype=dtypes.float32, kernel_initializer=None, bias_initializer=None, name=None): """Creates a CudnnRNN model from model spec. Args: num_layers: the number of layers for the RNN model. num_units: the number of units within the RNN model. input_mode: indicate whether there is a linear projection between the input and the actual computation before the first layer. It can be 'linear_input', 'skip_input' or 'auto_select'. 'linear_input' (default) always applies a linear projection of input onto RNN hidden state. (standard RNN behavior). 'skip_input' is only allowed when input_size == num_units; 'auto_select' implies 'skip_input' when input_size == num_units; otherwise, it implies 'linear_input'. direction: the direction model that the model operates. Can be either 'unidirectional' or 'bidirectional' dropout: dropout rate, a number between [0, 1]. Dropout is applied on inputs of each layer. When set to 0, dropout is disabled. seed: the op seed used for initializing dropout. See @{tf.set_random_seed} for behavior. dtype: tf.float32 or tf.float64 kernel_initializer: starting value to initialize the weight. bias_initializer: starting value to initialize the bias (default is all zeros). name: VariableScope for the created subgraph; defaults to class name. This only serves the default scope if later no scope is specified when invoking __call__(). Raises: ValueError: if direction is invalid. Or dtype is not supported. """ super(_CudnnRNN, self).__init__(dtype=dtype, name=name) cudnn_rnn_ops.check_direction(direction) cudnn_rnn_ops.check_input_mode(input_mode) if dtype not in [dtypes.float32, dtypes.float64]: raise ValueError("Only support float32, float64, provided %s" % dtype) # Layer self.dtype is type name, the original DType object is kept here. self._plain_dtype = dtype self._num_layers = num_layers self._num_units = num_units self._input_mode = input_mode self._direction = direction self._dropout = dropout self._seed = seed self._kernel_initializer = kernel_initializer self._bias_initializer = bias_initializer # Init input_size to None, which will be set after build(). self._input_size = None self._saveable = None