Python tensorflow.contrib.rnn.DropoutWrapper() Examples
The following are 30
code examples of tensorflow.contrib.rnn.DropoutWrapper().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
tensorflow.contrib.rnn
, or try the search function
.
Example #1
Source File: dynamic_rnn_estimator.py From keras-lambda with MIT License | 6 votes |
def apply_dropout( cell, input_keep_probability, output_keep_probability, random_seed=None): """Apply dropout to the outputs and inputs of `cell`. Args: cell: An `RNNCell`. input_keep_probability: Probability to keep inputs to `cell`. If `None`, no dropout is applied. output_keep_probability: Probability to keep outputs of `cell`. If `None`, no dropout is applied. random_seed: Seed for random dropout. Returns: An `RNNCell`, the result of applying the supplied dropouts to `cell`. """ input_prob_none = input_keep_probability is None output_prob_none = output_keep_probability is None if input_prob_none and output_prob_none: return cell if input_prob_none: input_keep_probability = 1.0 if output_prob_none: output_keep_probability = 1.0 return contrib_rnn.DropoutWrapper( cell, input_keep_probability, output_keep_probability, random_seed)
Example #2
Source File: layers.py From Counterfactual-StoryRW with MIT License | 6 votes |
def get_rnn_cell_trainable_variables(cell): """Returns the list of trainable variables of an RNN cell. Args: cell: an instance of :tf_main:`RNNCell <nn/rnn_cell/RNNCell>`. Returns: list: trainable variables of the cell. """ cell_ = cell while True: try: return cell_.trainable_variables except AttributeError: # Cell wrappers (e.g., `DropoutWrapper`) cannot directly access to # `trainable_variables` as they don't initialize superclass # (tf==v1.3). So try to access through the cell in the wrapper. cell_ = cell._cell # pylint: disable=protected-access
Example #3
Source File: dynamic_rnn_estimator.py From auto-alt-text-lambda-api with MIT License | 6 votes |
def apply_dropout( cell, input_keep_probability, output_keep_probability, random_seed=None): """Apply dropout to the outputs and inputs of `cell`. Args: cell: An `RNNCell`. input_keep_probability: Probability to keep inputs to `cell`. If `None`, no dropout is applied. output_keep_probability: Probability to keep outputs of `cell`. If `None`, no dropout is applied. random_seed: Seed for random dropout. Returns: An `RNNCell`, the result of applying the supplied dropouts to `cell`. """ input_prob_none = input_keep_probability is None output_prob_none = output_keep_probability is None if input_prob_none and output_prob_none: return cell if input_prob_none: input_keep_probability = 1.0 if output_prob_none: output_keep_probability = 1.0 return contrib_rnn.DropoutWrapper( cell, input_keep_probability, output_keep_probability, random_seed)
Example #4
Source File: rnn_base.py From auDeep with GNU General Public License v3.0 | 6 votes |
def _create_rnn_cell(self): """ Creates a single RNN cell according to the architecture of this RNN. Returns ------- rnn cell A single RNN cell according to the architecture of this RNN """ keep_prob = 1.0 if self.keep_prob is None else self.keep_prob if self.cell_type == CellType.GRU: return DropoutWrapper(GRUCell(self.num_units), keep_prob, keep_prob) elif self.cell_type == CellType.LSTM: return DropoutWrapper(LSTMCell(self.num_units), keep_prob, keep_prob) else: raise ValueError("unknown cell type: {}".format(self.cell_type))
Example #5
Source File: actor.py From neural-combinatorial-optimization-rl-tensorflow with MIT License | 6 votes |
def build_permutation(self): with tf.variable_scope("encoder"): with tf.variable_scope("embedding"): # Embed input sequence W_embed =tf.get_variable("weights", [1,self.input_dimension+2, self.input_embed], initializer=self.initializer) # +2 for TW feat. here too embedded_input = tf.nn.conv1d(self.input_, W_embed, 1, "VALID", name="embedded_input") # Batch Normalization embedded_input = tf.layers.batch_normalization(embedded_input, axis=2, training=self.is_training, name='layer_norm', reuse=None) with tf.variable_scope("dynamic_rnn"): # Encode input sequence cell1 = LSTMCell(self.num_neurons, initializer=self.initializer) # BNLSTMCell(self.num_neurons, self.training) or cell1 = DropoutWrapper(cell1, output_keep_prob=0.9) # Return the output activations [Batch size, Sequence Length, Num_neurons] and last hidden state as tensors. encoder_output, encoder_state = tf.nn.dynamic_rnn(cell1, embedded_input, dtype=tf.float32) with tf.variable_scope('decoder'): # Ptr-net returns permutations (self.positions), with their log-probability for backprop self.ptr = Pointer_decoder(encoder_output, self.config) self.positions, self.log_softmax, self.attending, self.pointing = self.ptr.loop_decode(encoder_state) variable_summaries('log_softmax',self.log_softmax, with_max_min = True)
Example #6
Source File: p8_TextRNN_model.py From pynlp with MIT License | 6 votes |
def inference(self): """main computation graph here: 1. embeddding layer, 2.Bi-LSTM layer, 3.concat, 4.FC layer 5.softmax """ #1.get emebedding of words in the sentence self.embedded_words = tf.nn.embedding_lookup(self.Embedding,self.input_x) #shape:[None,sentence_length,embed_size] #2. Bi-lstm layer # define lstm cess:get lstm cell output lstm_fw_cell=rnn.BasicLSTMCell(self.hidden_size) #forward direction cell lstm_bw_cell=rnn.BasicLSTMCell(self.hidden_size) #backward direction cell if self.dropout_keep_prob is not None: lstm_fw_cell=rnn.DropoutWrapper(lstm_fw_cell,output_keep_prob=self.dropout_keep_prob) lstm_bw_cell=rnn.DropoutWrapper(lstm_bw_cell,output_keep_prob=self.dropout_keep_prob) # bidirectional_dynamic_rnn: input: [batch_size, max_time, input_size] # output: A tuple (outputs, output_states) # where:outputs: A tuple (output_fw, output_bw) containing the forward and the backward rnn output `Tensor`. outputs,_=tf.nn.bidirectional_dynamic_rnn(lstm_fw_cell,lstm_bw_cell,self.embedded_words,dtype=tf.float32) #[batch_size,sequence_length,hidden_size] #creates a dynamic bidirectional recurrent neural network print("outputs:===>",outputs) #outputs:(<tf.Tensor 'bidirectional_rnn/fw/fw/transpose:0' shape=(?, 5, 100) dtype=float32>, <tf.Tensor 'ReverseV2:0' shape=(?, 5, 100) dtype=float32>)) #3. concat output output_rnn=tf.concat(outputs,axis=2) #[batch_size,sequence_length,hidden_size*2] #self.output_rnn_last=tf.reduce_mean(output_rnn,axis=1) #[batch_size,hidden_size*2] self.output_rnn_last=output_rnn[:,-1,:] ##[batch_size,hidden_size*2] #TODO print("output_rnn_last:", self.output_rnn_last) # <tf.Tensor 'strided_slice:0' shape=(?, 200) dtype=float32> #4. logits(use linear layer) with tf.name_scope("output"): #inputs: A `Tensor` of shape `[batch_size, dim]`. The forward activations of the input network. logits = tf.matmul(self.output_rnn_last, self.W_projection) + self.b_projection # [batch_size,num_classes] return logits
Example #7
Source File: model.py From Machine-Learning-Study-Notes with Apache License 2.0 | 6 votes |
def build_lstm(self): def build_cell(): cell = rnn.BasicLSTMCell(self._hidden_size, forget_bias=1.0, state_is_tuple=True) cell = rnn.DropoutWrapper(cell, output_keep_prob=self._keep_prob) return cell mul_cell = rnn.MultiRNNCell([build_cell() for _ in range(self._num_layer)], state_is_tuple=True) self._init_state = mul_cell.zero_state(self._num_seq, dtype=tf.float32) outputs, self._final_state = tf.nn.dynamic_rnn(mul_cell, self._inputs, initial_state=self._init_state) outputs = tf.reshape(outputs, [-1, self._hidden_size]) W = tf.Variable(tf.truncated_normal([self._hidden_size, self._corpus.word_num], stddev=0.1, dtype=tf.float32)) bais = tf.Variable(tf.zeros([1, self._corpus.word_num], dtype=tf.float32), dtype=tf.float32) self._prediction = tf.nn.softmax(tf.matmul(outputs, W) + bais)
Example #8
Source File: p8_TextRNN_model.py From text_classification with MIT License | 6 votes |
def inference(self): """main computation graph here: 1. embeddding layer, 2.Bi-LSTM layer, 3.concat, 4.FC layer 5.softmax """ #1.get emebedding of words in the sentence self.embedded_words = tf.nn.embedding_lookup(self.Embedding,self.input_x) #shape:[None,sentence_length,embed_size] #2. Bi-lstm layer # define lstm cess:get lstm cell output lstm_fw_cell=rnn.BasicLSTMCell(self.hidden_size) #forward direction cell lstm_bw_cell=rnn.BasicLSTMCell(self.hidden_size) #backward direction cell if self.dropout_keep_prob is not None: lstm_fw_cell=rnn.DropoutWrapper(lstm_fw_cell,output_keep_prob=self.dropout_keep_prob) lstm_bw_cell=rnn.DropoutWrapper(lstm_bw_cell,output_keep_prob=self.dropout_keep_prob) # bidirectional_dynamic_rnn: input: [batch_size, max_time, input_size] # output: A tuple (outputs, output_states) # where:outputs: A tuple (output_fw, output_bw) containing the forward and the backward rnn output `Tensor`. outputs,_=tf.nn.bidirectional_dynamic_rnn(lstm_fw_cell,lstm_bw_cell,self.embedded_words,dtype=tf.float32) #[batch_size,sequence_length,hidden_size] #creates a dynamic bidirectional recurrent neural network print("outputs:===>",outputs) #outputs:(<tf.Tensor 'bidirectional_rnn/fw/fw/transpose:0' shape=(?, 5, 100) dtype=float32>, <tf.Tensor 'ReverseV2:0' shape=(?, 5, 100) dtype=float32>)) #3. concat output output_rnn=tf.concat(outputs,axis=2) #[batch_size,sequence_length,hidden_size*2] #self.output_rnn_last=tf.reduce_mean(output_rnn,axis=1) #[batch_size,hidden_size*2] self.output_rnn_last=output_rnn[:,-1,:] ##[batch_size,hidden_size*2] #TODO print("output_rnn_last:", self.output_rnn_last) # <tf.Tensor 'strided_slice:0' shape=(?, 200) dtype=float32> #4. logits(use linear layer) with tf.name_scope("output"): #inputs: A `Tensor` of shape `[batch_size, dim]`. The forward activations of the input network. logits = tf.matmul(self.output_rnn_last, self.W_projection) + self.b_projection # [batch_size,num_classes] return logits
Example #9
Source File: p9_BiLstmTextRelation_model.py From text_classification with MIT License | 6 votes |
def inference(self): """main computation graph here: 1. embeddding layer, 2.Bi-LSTM layer, 3.mean pooling, 4.FC layer, 5.softmax """ #1.get emebedding of words in the sentence self.embedded_words = tf.nn.embedding_lookup(self.Embedding,self.input_x) #shape:[None,sentence_length,embed_size] #2. Bi-lstm layer # define lstm cess:get lstm cell output lstm_fw_cell=rnn.BasicLSTMCell(self.hidden_size) #forward direction cell lstm_bw_cell=rnn.BasicLSTMCell(self.hidden_size) #backward direction cell if self.dropout_keep_prob is not None: lstm_fw_cell=rnn.DropoutWrapper(lstm_fw_cell,output_keep_prob=self.dropout_keep_prob) lstm_bw_cell==rnn.DropoutWrapper(lstm_bw_cell,output_keep_prob=self.dropout_keep_prob) # bidirectional_dynamic_rnn: input: [batch_size, max_time, input_size] # output: A tuple (outputs, output_states) # where:outputs: A tuple (output_fw, output_bw) containing the forward and the backward rnn output `Tensor`. outputs,_=tf.nn.bidirectional_dynamic_rnn(lstm_fw_cell,lstm_bw_cell,self.embedded_words,dtype=tf.float32) #[batch_size,sequence_length,hidden_size] #creates a dynamic bidirectional recurrent neural network print("outputs:===>",outputs) #outputs:(<tf.Tensor 'bidirectional_rnn/fw/fw/transpose:0' shape=(?, 5, 100) dtype=float32>, <tf.Tensor 'ReverseV2:0' shape=(?, 5, 100) dtype=float32>)) #3. concat output output_rnn=tf.concat(outputs,axis=2) #[batch_size,sequence_length,hidden_size*2] output_rnn_pooled=tf.reduce_mean(output_rnn,axis=1) #[batch_size,hidden_size*2] #output_rnn_last=output_rnn[:,-1,:] ##[batch_size,hidden_size*2] #TODO print("output_rnn_pooled:", output_rnn_pooled) # <tf.Tensor 'strided_slice:0' shape=(?, 200) dtype=float32> #4. logits(use linear layer) with tf.name_scope("output"): #inputs: A `Tensor` of shape `[batch_size, dim]`. The forward activations of the input network. logits = tf.matmul(output_rnn_pooled, self.W_projection) + self.b_projection # [batch_size,num_classes] return logits
Example #10
Source File: layers.py From texar with Apache License 2.0 | 6 votes |
def get_rnn_cell_trainable_variables(cell): """Returns the list of trainable variables of an RNN cell. Args: cell: an instance of :tf_main:`RNNCell <nn/rnn_cell/RNNCell>`. Returns: list: trainable variables of the cell. """ cell_ = cell while True: try: return cell_.trainable_variables except AttributeError: # Cell wrappers (e.g., `DropoutWrapper`) cannot directly access to # `trainable_variables` as they don't initialize superclass # (tf==v1.3). So try to access through the cell in the wrapper. cell_ = cell._cell # pylint: disable=protected-access
Example #11
Source File: a3_entity_network.py From text_classification with MIT License | 5 votes |
def input_encoder_bi_lstm(self): """use bi-directional lstm to encode query_embedding:[batch_size,sequence_length,embed_size] and story_embedding:[batch_size,story_length,sequence_length,embed_size] output:query_embedding:[batch_size,hidden_size*2] story_embedding:[batch_size,self.story_length,self.hidden_size*2] """ #1. encode query: bi-lstm layer lstm_fw_cell = rnn.BasicLSTMCell(self.hidden_size) # forward direction cell lstm_bw_cell = rnn.BasicLSTMCell(self.hidden_size) # backward direction cell if self.dropout_keep_prob is not None: lstm_fw_cell = rnn.DropoutWrapper(lstm_fw_cell, output_keep_prob=self.dropout_keep_prob) lstm_bw_cell == rnn.DropoutWrapper(lstm_bw_cell, output_keep_prob=self.dropout_keep_prob) query_hidden_output, _ = tf.nn.bidirectional_dynamic_rnn(lstm_fw_cell, lstm_bw_cell, self.query_embedding,dtype=tf.float32,scope="query_rnn") # [batch_size,sequence_length,hidden_size] #creates a dynamic bidirectional recurrent neural network query_hidden_output = tf.concat(query_hidden_output, axis=2) #[batch_size,sequence_length,hidden_size*2] self.query_embedding=tf.reduce_sum(query_hidden_output,axis=1) #[batch_size,hidden_size*2] print("input_encoder_bi_lstm.self.query_embedding:",self.query_embedding) #2. encode story # self.story_embedding:[batch_size,story_length,sequence_length,embed_size] self.story_embedding=tf.reshape(self.story_embedding,shape=(-1,self.story_length*self.sequence_length,self.embed_size)) #[self.story_length*self.sequence_length,self.embed_size] lstm_fw_cell_story = rnn.BasicLSTMCell(self.hidden_size) # forward direction cell lstm_bw_cell_story = rnn.BasicLSTMCell(self.hidden_size) # backward direction cell if self.dropout_keep_prob is not None: lstm_fw_cell_story = rnn.DropoutWrapper(lstm_fw_cell_story, output_keep_prob=self.dropout_keep_prob) lstm_bw_cell_story == rnn.DropoutWrapper(lstm_bw_cell_story, output_keep_prob=self.dropout_keep_prob) story_hidden_output, _ = tf.nn.bidirectional_dynamic_rnn(lstm_fw_cell_story, lstm_bw_cell_story, self.story_embedding,dtype=tf.float32,scope="story_rnn") story_hidden_output=tf.concat(story_hidden_output,axis=2) #[batch_size,story_length*sequence_length,hidden_size*2] story_hidden_output=tf.reshape(story_hidden_output,shape=(-1,self.story_length,self.sequence_length,self.hidden_size*2)) self.story_embedding = tf.reduce_sum(story_hidden_output, axis=2) # [batch_size,self.story_length,self.hidden_size*2]
Example #12
Source File: net_work.py From ZNLP with MIT License | 5 votes |
def lstm_cell(self): cell = rnn.LSTMCell(self.cfg.getint('net_work', 'hidden_size'), reuse=tf.get_variable_scope().reuse) return rnn.DropoutWrapper(cell, output_keep_prob=self.keep_prob)
Example #13
Source File: p8_TextRNN_model_multi_layers.py From text_classification with MIT License | 5 votes |
def inference(self): """main computation graph here: 1. embeddding layer, 2.Bi-LSTM layer-->dropout,3.LSTM layer-->dropout 4.FC layer 6.softmax layer """ #1.get emebedding of words in the sentence self.embedded_words = tf.nn.embedding_lookup(self.Embedding,self.input_x) #shape:[None,sentence_length,embed_size] #2. Bi-lstm layer # define lstm cess:get lstm cell output lstm_fw_cell=rnn.BasicLSTMCell(self.hidden_size) #forward direction cell lstm_bw_cell=rnn.BasicLSTMCell(self.hidden_size) #backward direction cell if self.dropout_keep_prob is not None: lstm_fw_cell=rnn.DropoutWrapper(lstm_fw_cell,output_keep_prob=self.dropout_keep_prob) lstm_bw_cell=rnn.DropoutWrapper(lstm_bw_cell,output_keep_prob=self.dropout_keep_prob) # bidirectional_dynamic_rnn: input: [batch_size, max_time, input_size] # output: A tuple (outputs, output_states) # where:outputs: A tuple (output_fw, output_bw) containing the forward and the backward rnn output `Tensor`. outputs,_=tf.nn.bidirectional_dynamic_rnn(lstm_fw_cell,lstm_bw_cell,self.embedded_words,dtype=tf.float32) #[batch_size,sequence_length,hidden_size] #creates a dynamic bidirectional recurrent neural network print("outputs:===>",outputs) #outputs:(<tf.Tensor 'bidirectional_rnn/fw/fw/transpose:0' shape=(?, 5, 100) dtype=float32>, <tf.Tensor 'ReverseV2:0' shape=(?, 5, 100) dtype=float32>)) output_rnn=tf.concat(outputs,axis=2) #[batch_size,sequence_length,hidden_size*2] #3. Second LSTM layer rnn_cell=rnn.BasicLSTMCell(self.hidden_size*2) if self.dropout_keep_prob is not None: rnn_cell=rnn.DropoutWrapper(rnn_cell,output_keep_prob=self.dropout_keep_prob) _,final_state_c_h=tf.nn.dynamic_rnn(rnn_cell,output_rnn,dtype=tf.float32) final_state=final_state_c_h[1] #4 .FC layer output=tf.layers.dense(final_state,self.hidden_size*2,activation=tf.nn.tanh) #5. logits(use linear layer) with tf.name_scope("output"): #inputs: A `Tensor` of shape `[batch_size, dim]`. The forward activations of the input network. logits = tf.matmul(output, self.W_projection) + self.b_projection # [batch_size,num_classes] return logits
Example #14
Source File: model_utils.py From language with Apache License 2.0 | 5 votes |
def _single_cell(unit_type, num_units, forget_bias, dropout, mode, residual_connection=False, residual_fn=None, trainable=True): """Create an instance of a single RNN cell.""" # dropout (= 1 - keep_prob) is set to 0 during eval and infer dropout = dropout if mode == tf.estimator.ModeKeys.TRAIN else 0.0 # Cell Type if unit_type == "lstm": single_cell = contrib_rnn.LSTMCell( num_units, forget_bias=forget_bias, trainable=trainable) elif unit_type == "gru": single_cell = contrib_rnn.GRUCell(num_units, trainable=trainable) elif unit_type == "layer_norm_lstm": single_cell = contrib_rnn.LayerNormBasicLSTMCell( num_units, forget_bias=forget_bias, layer_norm=True, trainable=trainable) elif unit_type == "nas": single_cell = contrib_rnn.NASCell(num_units, trainable=trainable) else: raise ValueError("Unknown unit type %s!" % unit_type) # Dropout (= 1 - keep_prob). if dropout > 0.0: single_cell = contrib_rnn.DropoutWrapper( cell=single_cell, input_keep_prob=(1.0 - dropout)) # Residual. if residual_connection: single_cell = contrib_rnn.ResidualWrapper( single_cell, residual_fn=residual_fn) return single_cell
Example #15
Source File: lstm_utils.py From synvae with MIT License | 5 votes |
def rnn_cell(rnn_cell_size, dropout_keep_prob, residual, is_training=True): """Builds an LSTMBlockCell based on the given parameters.""" dropout_keep_prob = dropout_keep_prob if is_training else 1.0 cells = [] for i in range(len(rnn_cell_size)): cell = rnn.LSTMBlockCell(rnn_cell_size[i]) if residual: cell = rnn.ResidualWrapper(cell) if i == 0 or rnn_cell_size[i] != rnn_cell_size[i - 1]: cell = rnn.InputProjectionWrapper(cell, rnn_cell_size[i]) cell = rnn.DropoutWrapper( cell, input_keep_prob=dropout_keep_prob) cells.append(cell) return rnn.MultiRNNCell(cells)
Example #16
Source File: lstm_crf_layer.py From pynlp with MIT License | 5 votes |
def _witch_cell(self): """ RNN 类型 :return: """ cell_tmp = None if self.cell_type == 'lstm': cell_tmp = rnn.BasicLSTMCell(self.hidden_unit) elif self.cell_type == 'gru': cell_tmp = rnn.GRUCell(self.hidden_unit) # 是否需要进行dropout if self.dropout_rate is not None: cell_tmp = rnn.DropoutWrapper(cell_tmp, output_keep_prob=self.dropout_rate) return cell_tmp
Example #17
Source File: Model.py From pynlp with MIT License | 5 votes |
def _biLSTMBlock(self, inputs, num_units, scope, seq_len=None, isReuse=False): with tf.variable_scope(scope, reuse=isReuse): lstmCell = LSTMCell(num_units=num_units) dropLSTMCell = lambda: DropoutWrapper(lstmCell, output_keep_prob=self.dropout_keep_prob) fwLSTMCell, bwLSTMCell = dropLSTMCell(), dropLSTMCell() output = tf.nn.bidirectional_dynamic_rnn(cell_fw=fwLSTMCell, cell_bw=bwLSTMCell, inputs=inputs, # sequence_length=seq_len, dtype=tf.float32) return output # data encoding block ("3.1 Input Encoding" in paper)
Example #18
Source File: a3_entity_network.py From pynlp with MIT License | 5 votes |
def input_encoder_bi_lstm(self): """use bi-directional lstm to encode query_embedding:[batch_size,sequence_length,embed_size] and story_embedding:[batch_size,story_length,sequence_length,embed_size] output:query_embedding:[batch_size,hidden_size*2] story_embedding:[batch_size,self.story_length,self.hidden_size*2] """ # 1. encode query: bi-lstm layer lstm_fw_cell = rnn.BasicLSTMCell(self.hidden_size) # forward direction cell lstm_bw_cell = rnn.BasicLSTMCell(self.hidden_size) # backward direction cell if self.dropout_keep_prob is not None: lstm_fw_cell = rnn.DropoutWrapper(lstm_fw_cell, output_keep_prob=self.dropout_keep_prob) lstm_bw_cell == rnn.DropoutWrapper(lstm_bw_cell, output_keep_prob=self.dropout_keep_prob) query_hidden_output, _ = tf.nn.bidirectional_dynamic_rnn(lstm_fw_cell, lstm_bw_cell, self.query_embedding, dtype=tf.float32, scope="query_rnn") # [batch_size,sequence_length,hidden_size] #creates a dynamic bidirectional recurrent neural network query_hidden_output = tf.concat(query_hidden_output, axis=2) # [batch_size,sequence_length,hidden_size*2] self.query_embedding = tf.reduce_sum(query_hidden_output, axis=1) # [batch_size,hidden_size*2] print("input_encoder_bi_lstm.self.query_embedding:", self.query_embedding) # 2. encode story # self.story_embedding:[batch_size,story_length,sequence_length,embed_size] self.story_embedding = tf.reshape(self.story_embedding, shape=(-1, self.story_length * self.sequence_length, self.embed_size)) # [self.story_length*self.sequence_length,self.embed_size] lstm_fw_cell_story = rnn.BasicLSTMCell(self.hidden_size) # forward direction cell lstm_bw_cell_story = rnn.BasicLSTMCell(self.hidden_size) # backward direction cell if self.dropout_keep_prob is not None: lstm_fw_cell_story = rnn.DropoutWrapper(lstm_fw_cell_story, output_keep_prob=self.dropout_keep_prob) lstm_bw_cell_story == rnn.DropoutWrapper(lstm_bw_cell_story, output_keep_prob=self.dropout_keep_prob) story_hidden_output, _ = tf.nn.bidirectional_dynamic_rnn(lstm_fw_cell_story, lstm_bw_cell_story, self.story_embedding, dtype=tf.float32, scope="story_rnn") story_hidden_output = tf.concat(story_hidden_output, axis=2) # [batch_size,story_length*sequence_length,hidden_size*2] story_hidden_output = tf.reshape(story_hidden_output, shape=(-1, self.story_length, self.sequence_length, self.hidden_size * 2)) self.story_embedding = tf.reduce_sum(story_hidden_output, axis=2) # [batch_size,self.story_length,self.hidden_size*2]
Example #19
Source File: p8_TextRNN_model_multi_layers.py From pynlp with MIT License | 5 votes |
def inference(self): """main computation graph here: 1. embeddding layer, 2.Bi-LSTM layer-->dropout,3.LSTM layer-->dropout 4.FC layer 6.softmax layer """ #1.get emebedding of words in the sentence self.embedded_words = tf.nn.embedding_lookup(self.Embedding,self.input_x) #shape:[None,sentence_length,embed_size] #2. Bi-lstm layer # define lstm cess:get lstm cell output lstm_fw_cell=rnn.BasicLSTMCell(self.hidden_size) #forward direction cell lstm_bw_cell=rnn.BasicLSTMCell(self.hidden_size) #backward direction cell if self.dropout_keep_prob is not None: lstm_fw_cell=rnn.DropoutWrapper(lstm_fw_cell,output_keep_prob=self.dropout_keep_prob) lstm_bw_cell=rnn.DropoutWrapper(lstm_bw_cell,output_keep_prob=self.dropout_keep_prob) # bidirectional_dynamic_rnn: input: [batch_size, max_time, input_size] # output: A tuple (outputs, output_states) # where:outputs: A tuple (output_fw, output_bw) containing the forward and the backward rnn output `Tensor`. outputs,_=tf.nn.bidirectional_dynamic_rnn(lstm_fw_cell,lstm_bw_cell,self.embedded_words,dtype=tf.float32) #[batch_size,sequence_length,hidden_size] #creates a dynamic bidirectional recurrent neural network print("outputs:===>",outputs) #outputs:(<tf.Tensor 'bidirectional_rnn/fw/fw/transpose:0' shape=(?, 5, 100) dtype=float32>, <tf.Tensor 'ReverseV2:0' shape=(?, 5, 100) dtype=float32>)) output_rnn=tf.concat(outputs,axis=2) #[batch_size,sequence_length,hidden_size*2] #3. Second LSTM layer rnn_cell=rnn.BasicLSTMCell(self.hidden_size*2) if self.dropout_keep_prob is not None: rnn_cell=rnn.DropoutWrapper(rnn_cell,output_keep_prob=self.dropout_keep_prob) _,final_state_c_h=tf.nn.dynamic_rnn(rnn_cell,output_rnn,dtype=tf.float32) final_state=final_state_c_h[1] #4 .FC layer output=tf.layers.dense(final_state,self.hidden_size*2,activation=tf.nn.tanh) #5. logits(use linear layer) with tf.name_scope("output"): #inputs: A `Tensor` of shape `[batch_size, dim]`. The forward activations of the input network. logits = tf.matmul(output, self.W_projection) + self.b_projection # [batch_size,num_classes] return logits
Example #20
Source File: ck_model.py From cutkum with MIT License | 5 votes |
def _inference(self): logging.info('...create inference') fw_state_tuple = self.unstack_fw_states(self.fw_state) fw_cells = list() for i in range(0, self.num_layers): if (self.cell_type == 'lstm'): cell = rnn.LSTMCell(num_units=self.cell_sizes[i], state_is_tuple=True) elif (self.cell_type == 'gru'): # change to GRU cell = rnn.GRUCell(num_units=self.cell_sizes[i]) else: cell = rnn.BasicRNNCell(num_units=self.cell_sizes[i]) cell = rnn.DropoutWrapper(cell, output_keep_prob=self.keep_prob) fw_cells.append(cell) self.fw_cells = rnn.MultiRNNCell(fw_cells, state_is_tuple=True) rnn_outputs, states = tf.nn.dynamic_rnn( self.fw_cells, self.inputs, initial_state=fw_state_tuple, sequence_length=self.seq_lengths, dtype=tf.float32, time_major=True) # project output from rnn output size to OUTPUT_SIZE. Sometimes it is worth adding # an extra layer here. self.projection = lambda x: layers.linear(x, num_outputs=self.label_classes, activation_fn=tf.nn.sigmoid) self.logits = tf.map_fn(self.projection, rnn_outputs, name="logits") self.probs = tf.nn.softmax(self.logits, name="probs") self.states = states tf.add_to_collection('probs', self.probs)
Example #21
Source File: abstract_recurrent_estimator.py From icecaps with MIT License | 5 votes |
def build_deep_cell(self, cell_list=None, name=None, return_raw_list=False): if name is None: name = "cell" if cell_list is None: cell_list = [] for i in range(self.hparams.depth): cell = self.build_cell(name=name+"_"+str(i)) cell = DropoutWrapper(cell, output_keep_prob=self.keep_prob) cell_list.append(cell) if return_raw_list: return cell_list if len(cell_list) == 1: return cell_list[0] return MultiRNNCell(cell_list, state_is_tuple=False)
Example #22
Source File: model.py From deep_learning with MIT License | 5 votes |
def gru_cell(self): with tf.name_scope('gru_cell'): # activation:tanh cell = rnn.GRUCell(self.hidden_size, reuse=tf.get_variable_scope().reuse) return rnn.DropoutWrapper(cell, output_keep_prob=self.keep_prob)
Example #23
Source File: lstm_crf_layer.py From KBQA-BERT with MIT License | 5 votes |
def _witch_cell(self): """ RNN 类型 :return: """ cell_tmp = None if self.cell_type == 'lstm': cell_tmp = rnn.BasicLSTMCell(self.hidden_unit) elif self.cell_type == 'gru': cell_tmp = rnn.GRUCell(self.hidden_unit) # 是否需要进行dropout if self.dropout_rate is not None: cell_tmp = rnn.DropoutWrapper(cell_tmp, output_keep_prob=self.dropout_rate) return cell_tmp
Example #24
Source File: base.py From RecommenderSystems with MIT License | 5 votes |
def __call__(self, inputs, mask): ''' inputs: the embeddings of a batch of sequences. (batch_size, seq_length, emb_size) mask: mask for imcomplete sequences. (batch_size, seq_length, 1) ''' cells = [] for _ in range(self.layers): cell = rnn.BasicLSTMCell(self.hidden_units, activation=self.hidden_activation) cell = rnn.DropoutWrapper(cell, output_keep_prob=1.-self.dropout) cells.append(cell) self.cell = cell = rnn.MultiRNNCell(cells) zero_state = cell.zero_state(tf.shape(inputs)[0], dtype=tf.float32) sequence_length = tf.count_nonzero(tf.squeeze(mask, [-1]), -1) outputs, state = tf.nn.dynamic_rnn(cell, inputs, sequence_length=sequence_length, initial_state=zero_state) return outputs
Example #25
Source File: rnn_factory.py From THRED with MIT License | 5 votes |
def create_cell(unit_type, hidden_units, num_layers, use_residual=False, input_keep_prob=1.0, output_keep_prob=1.0, devices=None): if unit_type == 'lstm': def _new_cell(): return tf.nn.rnn_cell.BasicLSTMCell(hidden_units) elif unit_type == 'gru': def _new_cell(): return tf.contrib.rnn.GRUCell(hidden_units) else: raise ValueError('cell_type must be either lstm or gru') def _new_cell_wrapper(residual_connection=False, device_id=None): c = _new_cell() if input_keep_prob < 1.0 or output_keep_prob < 1.0: c = rnn.DropoutWrapper(c, input_keep_prob=input_keep_prob, output_keep_prob=output_keep_prob) if residual_connection: c = rnn.ResidualWrapper(c) if device_id: c = rnn.DeviceWrapper(c, device_id) return c if num_layers > 1: cells = [] for i in range(num_layers): is_residual = True if use_residual and i > 0 else False cells.append(_new_cell_wrapper(is_residual, devices[i] if devices else None)) return tf.contrib.rnn.MultiRNNCell(cells) else: return _new_cell_wrapper(device_id=devices[0] if devices else None)
Example #26
Source File: model_seq2seq.py From nlp_xiaojiang with MIT License | 5 votes |
def build_single_cell(self, n_hidden, use_residual): """构建一个单独的rnn cell Args: n_hidden: 隐藏层神经元数量 use_residual: 是否使用residual wrapper """ if self.cell_type == 'gru': cell_type = GRUCell else: cell_type = LSTMCell cell = cell_type(n_hidden) if self.use_dropout: cell = DropoutWrapper( cell, dtype=tf.float32, output_keep_prob=self.keep_prob_placeholder, seed=self.seed ) if use_residual: cell = ResidualWrapper(cell) return cell
Example #27
Source File: seq2seq.py From retrosynthesis_planner with GNU General Public License v3.0 | 5 votes |
def _make_cell(self, hidden_size=None): """Create a single RNN cell""" cell = self.cell_type(hidden_size or self.hidden_size) if self.dropout: cell = rnn.DropoutWrapper(cell, self.keep_prob) if self.residual: cell = rnn.ResidualWrapper(cell) return cell
Example #28
Source File: seq_helper.py From TransDG with MIT License | 5 votes |
def define_rnn_cell(cell_class, num_units, num_layers=1, keep_prob=1.0, input_keep_prob=None, output_keep_prob=None): if input_keep_prob is None: input_keep_prob = keep_prob if output_keep_prob is None: output_keep_prob = keep_prob cells = [] for _ in range(num_layers): if cell_class == 'GRU': cell = GRUCell(num_units=num_units) elif cell_class == 'LSTM': cell = LSTMCell(num_units=num_units) else: cell = RNNCell(num_units=num_units) if keep_prob < 1.0: cell = DropoutWrapper(cell=cell, input_keep_prob=input_keep_prob, output_keep_prob=output_keep_prob) cells.append(cell) if len(cells) > 1: final_cell = MultiRNNCell(cells) else: final_cell = cells[0] return final_cell
Example #29
Source File: handWrittenUnit.py From Machine-Learning-Study-Notes with Apache License 2.0 | 5 votes |
def func(): lstm_cell = rnn.BasicLSTMCell(num_units=hidden_size, forget_bias=1.0, state_is_tuple=True) lstm_cell = rnn.DropoutWrapper(lstm_cell, output_keep_prob=keep_prob) return lstm_cell
Example #30
Source File: handWrittenUnit_2.py From Machine-Learning-Study-Notes with Apache License 2.0 | 5 votes |
def func(): lstm_cell = rnn.BasicLSTMCell(hidden_size, forget_bias=1.0, state_is_tuple=True) lstm_cell = rnn.DropoutWrapper(lstm_cell, output_keep_prob=keep_prob) return lstm_cell