Python tensorflow.python.ops.rnn.dynamic_rnn() Examples
The following are 30
code examples of tensorflow.python.ops.rnn.dynamic_rnn().
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.python.ops.rnn
, or try the search function
.
Example #1
Source File: punct_attentive_model.py From neural_sequence_labeling with MIT License | 6 votes |
def _build_model_op(self): with tf.variable_scope("densely_connected_bi_rnn"): dense_bi_rnn = DenselyConnectedBiRNN(self.cfg["num_layers"], self.cfg["num_units_list"], cell_type=self.cfg["cell_type"]) context = dense_bi_rnn(self.word_emb, seq_len=self.seq_len) print("densely connected bi_rnn output shape: {}".format(context.get_shape().as_list())) with tf.variable_scope("attention"): p_context = tf.layers.dense(context, units=2 * self.cfg["num_units_list"][-1], use_bias=True, bias_initializer=tf.constant_initializer(0.0)) context = tf.transpose(context, [1, 0, 2]) p_context = tf.transpose(p_context, [1, 0, 2]) attn_cell = AttentionCell(self.cfg["num_units_list"][-1], context, p_context) attn_outs, _ = dynamic_rnn(attn_cell, context[1:, :, :], sequence_length=self.seq_len - 1, dtype=tf.float32, time_major=True) attn_outs = tf.transpose(attn_outs, [1, 0, 2]) print("attention output shape: {}".format(attn_outs.get_shape().as_list())) with tf.variable_scope("project"): self.logits = tf.layers.dense(attn_outs, units=self.tag_vocab_size, use_bias=True, bias_initializer=tf.constant_initializer(0.0)) print("logits shape: {}".format(self.logits.get_shape().as_list()))
Example #2
Source File: access_test.py From dnc with Apache License 2.0 | 6 votes |
def testBuildAndTrain(self): inputs = tf.random_normal([TIME_STEPS, BATCH_SIZE, INPUT_SIZE]) output, _ = rnn.dynamic_rnn( cell=self.module, inputs=inputs, initial_state=self.initial_state, time_major=True) targets = np.random.rand(TIME_STEPS, BATCH_SIZE, NUM_READS, WORD_SIZE) loss = tf.reduce_mean(tf.square(output - targets)) train_op = tf.train.GradientDescentOptimizer(1).minimize(loss) init = tf.global_variables_initializer() with self.test_session(): init.run() train_op.run()
Example #3
Source File: fused_rnn_cell.py From deep_image_model with Apache License 2.0 | 5 votes |
def __call__(self, inputs, initial_state=None, dtype=None, sequence_length=None, scope=None): is_list = isinstance(inputs, list) if self._use_dynamic_rnn: if is_list: inputs = array_ops.pack(inputs) outputs, state = rnn.dynamic_rnn( self._cell, inputs, sequence_length=sequence_length, initial_state=initial_state, dtype=dtype, time_major=True, scope=scope) if is_list: # Convert outputs back to list outputs = array_ops.unpack(outputs) else: # non-dynamic rnn if not is_list: inputs = array_ops.unpack(inputs) outputs, state = rnn.rnn(self._cell, inputs, initial_state=initial_state, dtype=dtype, sequence_length=sequence_length, scope=scope) if not is_list: # Convert outputs back to tensor outputs = array_ops.pack(outputs) return outputs, state
Example #4
Source File: session_debug_testlib.py From lambda-packs with MIT License | 5 votes |
def testDebugTrainingDynamicRNNWorks(self): with session.Session() as sess: input_size = 3 state_size = 2 time_steps = 4 batch_size = 2 input_values = np.random.randn(time_steps, batch_size, input_size) sequence_length = np.random.randint(0, time_steps, size=batch_size) concat_inputs = array_ops.placeholder( dtypes.float32, shape=(time_steps, batch_size, input_size)) outputs_dynamic, _ = rnn.dynamic_rnn( _RNNCellForTest(input_size, state_size), inputs=concat_inputs, sequence_length=sequence_length, time_major=True, dtype=dtypes.float32) toy_loss = math_ops.reduce_sum(outputs_dynamic * outputs_dynamic) train_op = gradient_descent.GradientDescentOptimizer( learning_rate=0.1).minimize(toy_loss, name="train_op") sess.run(variables.global_variables_initializer()) run_options = config_pb2.RunOptions(output_partition_graphs=True) debug_utils.watch_graph_with_blacklists( run_options, sess.graph, node_name_regex_blacklist="(.*rnn/while/.*|.*TensorArray.*)", debug_urls=self._debug_urls()) # b/36870549: Nodes with these name patterns need to be excluded from # tfdbg in order to prevent MSAN warnings of uninitialized Tensors # under both file:// and grpc:// debug URL schemes. run_metadata = config_pb2.RunMetadata() sess.run(train_op, feed_dict={concat_inputs: input_values}, options=run_options, run_metadata=run_metadata) debug_data.DebugDumpDir( self._dump_root, partition_graphs=run_metadata.partition_graphs)
Example #5
Source File: crf.py From deep_image_model with Apache License 2.0 | 5 votes |
def crf_log_norm(inputs, sequence_lengths, transition_params): """Computes the normalization for a CRF. Args: inputs: A [batch_size, max_seq_len, num_tags] tensor of unary potentials to use as input to the CRF layer. sequence_lengths: A [batch_size] vector of true sequence lengths. transition_params: A [num_tags, num_tags] transition matrix. Returns: log_norm: A [batch_size] vector of normalizers for a CRF. """ # Split up the first and rest of the inputs in preparation for the forward # algorithm. first_input = array_ops.slice(inputs, [0, 0, 0], [-1, 1, -1]) first_input = array_ops.squeeze(first_input, [1]) rest_of_input = array_ops.slice(inputs, [0, 1, 0], [-1, -1, -1]) # Compute the alpha values in the forward algorithm in order to get the # partition function. forward_cell = CrfForwardRnnCell(transition_params) _, alphas = rnn.dynamic_rnn( cell=forward_cell, inputs=rest_of_input, sequence_length=sequence_lengths - 1, initial_state=first_input, dtype=dtypes.float32) log_norm = math_ops.reduce_logsumexp(alphas, [1]) return log_norm
Example #6
Source File: dynamic_rnn_estimator.py From deep_image_model with Apache License 2.0 | 5 votes |
def _construct_rnn(self, initial_state, sequence_input): """Apply an RNN to `features`. The `features` dict must contain `self._inputs_key`, and the corresponding input should be a `Tensor` of shape `[batch_size, padded_length, k]` where `k` is the dimension of the input for each element of a sequence. `activations` has shape `[batch_size, sequence_length, n]` where `n` is `self._target_column.num_label_columns`. In the case of a multiclass classifier, `n` is the number of classes. `final_state` has shape determined by `self._cell` and its dtype must match `self._dtype`. Args: initial_state: the initial state to pass the the RNN. If `None`, the default starting state for `self._cell` is used. sequence_input: a `Tensor` with shape `[batch_size, padded_length, d]` that will be passed as input to the RNN. Returns: activations: the output of the RNN, projected to the appropriate number of dimensions. final_state: the final state output by the RNN. """ with ops.name_scope('RNN'): rnn_outputs, final_state = rnn.dynamic_rnn( cell=self._cell, inputs=sequence_input, initial_state=initial_state, dtype=self._dtype, parallel_iterations=self._parallel_iterations, swap_memory=self._swap_memory, time_major=False) activations = layers.fully_connected( inputs=rnn_outputs, num_outputs=self._target_column.num_label_columns, activation_fn=None, trainable=True) return activations, final_state
Example #7
Source File: lstm1d.py From keras-lambda with MIT License | 5 votes |
def ndlstm_base_dynamic(inputs, noutput, scope=None, reverse=False): """Run an LSTM, either forward or backward. This is a 1D LSTM implementation using dynamic_rnn and the TensorFlow LSTM op. Args: inputs: input sequence (length, batch_size, ninput) noutput: depth of output scope: optional scope name reverse: run LSTM in reverse Returns: Output sequence (length, batch_size, noutput) """ with variable_scope.variable_scope(scope, "SeqLstm", [inputs]): # TODO(tmb) make batch size, sequence_length dynamic # example: sequence_length = tf.shape(inputs)[0] _, batch_size, _ = _shape(inputs) lstm_cell = core_rnn_cell_impl.BasicLSTMCell(noutput, state_is_tuple=False) state = array_ops.zeros([batch_size, lstm_cell.state_size]) sequence_length = int(inputs.get_shape()[0]) sequence_lengths = math_ops.to_int64( array_ops.fill([batch_size], sequence_length)) if reverse: inputs = array_ops.reverse_v2(inputs, [0]) outputs, _ = rnn.dynamic_rnn( lstm_cell, inputs, sequence_lengths, state, time_major=True) if reverse: outputs = array_ops.reverse_v2(outputs, [0]) return outputs
Example #8
Source File: crf.py From keras-lambda with MIT License | 5 votes |
def crf_log_norm(inputs, sequence_lengths, transition_params): """Computes the normalization for a CRF. Args: inputs: A [batch_size, max_seq_len, num_tags] tensor of unary potentials to use as input to the CRF layer. sequence_lengths: A [batch_size] vector of true sequence lengths. transition_params: A [num_tags, num_tags] transition matrix. Returns: log_norm: A [batch_size] vector of normalizers for a CRF. """ # Split up the first and rest of the inputs in preparation for the forward # algorithm. first_input = array_ops.slice(inputs, [0, 0, 0], [-1, 1, -1]) first_input = array_ops.squeeze(first_input, [1]) rest_of_input = array_ops.slice(inputs, [0, 1, 0], [-1, -1, -1]) # Compute the alpha values in the forward algorithm in order to get the # partition function. forward_cell = CrfForwardRnnCell(transition_params) _, alphas = rnn.dynamic_rnn( cell=forward_cell, inputs=rest_of_input, sequence_length=sequence_lengths - 1, initial_state=first_input, dtype=dtypes.float32) log_norm = math_ops.reduce_logsumexp(alphas, [1]) return log_norm
Example #9
Source File: fused_rnn_cell.py From keras-lambda with MIT License | 5 votes |
def __call__(self, inputs, initial_state=None, dtype=None, sequence_length=None, scope=None): is_list = isinstance(inputs, list) if self._use_dynamic_rnn: if is_list: inputs = array_ops.stack(inputs) outputs, state = rnn.dynamic_rnn( self._cell, inputs, sequence_length=sequence_length, initial_state=initial_state, dtype=dtype, time_major=True, scope=scope) if is_list: # Convert outputs back to list outputs = array_ops.unstack(outputs) else: # non-dynamic rnn if not is_list: inputs = array_ops.unstack(inputs) outputs, state = contrib_rnn.static_rnn(self._cell, inputs, initial_state=initial_state, dtype=dtype, sequence_length=sequence_length, scope=scope) if not is_list: # Convert outputs back to tensor outputs = array_ops.stack(outputs) return outputs, state
Example #10
Source File: recurrent_layers.py From document-qa with Apache License 2.0 | 5 votes |
def apply(self, is_train, inputs, mask=None): cell = self.cell_spec(is_train) batch_size = inputs.shape.as_list()[0] if self.learn_initial: initial = self.cell_spec.build_initial_state_var(batch_size, cell) else: initial = None return dynamic_rnn(cell, inputs, mask, initial, dtype=tf.float32)[0]
Example #11
Source File: m05.py From dqa-net with Apache License 2.0 | 5 votes |
def get_last_hidden_state(self, sentence, init_hidden_state=None): assert isinstance(sentence, Sentence) with tf.variable_scope(self.scope, reuse=self.used): J = sentence.shape[-1] Ax = tf.nn.embedding_lookup(self.emb_mat, sentence.x) # [N, C, J, e] F = reduce(mul, sentence.shape[:-1], 1) init_hidden_state = init_hidden_state or self.cell.zero_state(F, tf.float32) Ax_flat = tf.reshape(Ax, [F, J, self.input_size]) x_len_flat = tf.reshape(sentence.x_len, [F]) # Ax_flat_split = [tf.squeeze(x_flat_each, [1]) for x_flat_each in tf.split(1, J, Ax_flat)] o_flat, h_flat = rnn.dynamic_rnn(self.cell, Ax_flat, x_len_flat, initial_state=init_hidden_state) self.used = True return h_flat
Example #12
Source File: recurrent_layers.py From document-qa with Apache License 2.0 | 5 votes |
def apply(self, is_train, x, mask=None): state = dynamic_rnn(self.cell_spec(is_train), x, mask, dtype=tf.float32)[1] if isinstance(self.output, int): return state[self.output] else: if self.output is None: if not isinstance(state, tf.Tensor): raise ValueError() return state for i,x in enumerate(state._fields): if x == self.output: return state[i] raise ValueError()
Example #13
Source File: session_debug_testlib.py From Serverless-Deep-Learning-with-TensorFlow-and-AWS-Lambda with MIT License | 5 votes |
def testDebugTrainingDynamicRNNWorks(self): with session.Session() as sess: input_size = 3 state_size = 2 time_steps = 4 batch_size = 2 input_values = np.random.randn(time_steps, batch_size, input_size) sequence_length = np.random.randint(0, time_steps, size=batch_size) concat_inputs = array_ops.placeholder( dtypes.float32, shape=(time_steps, batch_size, input_size)) outputs_dynamic, _ = rnn.dynamic_rnn( _RNNCellForTest(input_size, state_size), inputs=concat_inputs, sequence_length=sequence_length, time_major=True, dtype=dtypes.float32) toy_loss = math_ops.reduce_sum(outputs_dynamic * outputs_dynamic) train_op = gradient_descent.GradientDescentOptimizer( learning_rate=0.1).minimize(toy_loss, name="train_op") sess.run(variables.global_variables_initializer()) run_options = config_pb2.RunOptions(output_partition_graphs=True) debug_utils.watch_graph_with_blacklists( run_options, sess.graph, node_name_regex_blacklist="(.*rnn/while/.*|.*TensorArray.*)", debug_urls=self._debug_urls()) # b/36870549: Nodes with these name patterns need to be excluded from # tfdbg in order to prevent MSAN warnings of uninitialized Tensors # under both file:// and grpc:// debug URL schemes. run_metadata = config_pb2.RunMetadata() sess.run(train_op, feed_dict={concat_inputs: input_values}, options=run_options, run_metadata=run_metadata) debug_data.DebugDumpDir( self._dump_root, partition_graphs=run_metadata.partition_graphs)
Example #14
Source File: rnn.py From active-qa with Apache License 2.0 | 5 votes |
def bw_dynamic_rnn(cell, inputs, sequence_length=None, initial_state=None, dtype=None, parallel_iterations=None, swap_memory=False, time_major=False, scope=None): assert not time_major # TODO : to be implemented later! flat_inputs = flatten(inputs, 2) # [-1, J, d] flat_len = None if sequence_length is None else tf.cast( flatten(sequence_length, 0), 'int64') flat_inputs = tf.reverse(flat_inputs, 1) if sequence_length is None \ else tf.reverse_sequence(flat_inputs, sequence_length, 1) flat_outputs, final_state = _dynamic_rnn( cell, flat_inputs, sequence_length=flat_len, initial_state=initial_state, dtype=dtype, parallel_iterations=parallel_iterations, swap_memory=swap_memory, time_major=time_major, scope=scope) flat_outputs = tf.reverse(flat_outputs, 1) if sequence_length is None \ else tf.reverse_sequence(flat_outputs, sequence_length, 1) outputs = reconstruct(flat_outputs, inputs, 2) return outputs, final_state
Example #15
Source File: main.py From MDLSTM with Apache License 2.0 | 5 votes |
def standard_lstm(input_data, rnn_size): b, h, w, c = input_data.get_shape().as_list() new_input_data = tf.reshape(input_data, (b, h * w, c)) rnn_out, _ = dynamic_rnn(tf.contrib.rnn.LSTMCell(rnn_size), inputs=new_input_data, dtype=tf.float32) rnn_out = tf.reshape(rnn_out, (b, h, w, rnn_size)) return rnn_out
Example #16
Source File: rnn.py From active-qa with Apache License 2.0 | 5 votes |
def dynamic_rnn(cell, inputs, sequence_length=None, initial_state=None, dtype=None, parallel_iterations=None, swap_memory=False, time_major=False, scope=None): assert not time_major # TODO : to be implemented later! flat_inputs = flatten(inputs, 2) # [-1, J, d] flat_len = None if sequence_length is None else tf.cast( flatten(sequence_length, 0), 'int64') flat_outputs, final_state = _dynamic_rnn( cell, flat_inputs, sequence_length=flat_len, initial_state=initial_state, dtype=dtype, parallel_iterations=parallel_iterations, swap_memory=swap_memory, time_major=time_major, scope=scope) outputs = reconstruct(flat_outputs, inputs, 2) return outputs, final_state
Example #17
Source File: blstm_cnn_crf_model.py From neural_sequence_labeling with MIT License | 5 votes |
def _build_model_op(self): with tf.variable_scope("bi_directional_rnn"): cell_fw = self._create_rnn_cell() cell_bw = self._create_rnn_cell() if self.cfg["use_stack_rnn"]: rnn_outs, *_ = stack_bidirectional_dynamic_rnn(cell_fw, cell_bw, self.word_emb, dtype=tf.float32, sequence_length=self.seq_len) else: rnn_outs, *_ = bidirectional_dynamic_rnn(cell_fw, cell_bw, self.word_emb, sequence_length=self.seq_len, dtype=tf.float32) rnn_outs = tf.concat(rnn_outs, axis=-1) rnn_outs = tf.layers.dropout(rnn_outs, rate=self.drop_rate, training=self.is_train) if self.cfg["use_residual"]: word_project = tf.layers.dense(self.word_emb, units=2 * self.cfg["num_units"], use_bias=False) rnn_outs = rnn_outs + word_project outputs = layer_normalize(rnn_outs) if self.cfg["use_layer_norm"] else rnn_outs print("rnn output shape: {}".format(outputs.get_shape().as_list())) if self.cfg["use_attention"] == "self_attention": with tf.variable_scope("self_attention"): attn_outs = multi_head_attention(outputs, outputs, self.cfg["num_heads"], self.cfg["attention_size"], drop_rate=self.drop_rate, is_train=self.is_train) if self.cfg["use_residual"]: attn_outs = attn_outs + outputs outputs = layer_normalize(attn_outs) if self.cfg["use_layer_norm"] else attn_outs print("self-attention output shape: {}".format(outputs.get_shape().as_list())) elif self.cfg["use_attention"] == "normal_attention": with tf.variable_scope("normal_attention"): context = tf.transpose(outputs, [1, 0, 2]) p_context = tf.layers.dense(outputs, units=2 * self.cfg["num_units"], use_bias=False) p_context = tf.transpose(p_context, [1, 0, 2]) attn_cell = AttentionCell(self.cfg["num_units"], context, p_context) # time major based attn_outs, _ = dynamic_rnn(attn_cell, context, sequence_length=self.seq_len, time_major=True, dtype=tf.float32) outputs = tf.transpose(attn_outs, [1, 0, 2]) print("attention output shape: {}".format(outputs.get_shape().as_list())) with tf.variable_scope("project"): self.logits = tf.layers.dense(outputs, units=self.tag_vocab_size, use_bias=True) print("logits shape: {}".format(self.logits.get_shape().as_list()))
Example #18
Source File: test.py From AdaScaling with GNU General Public License v3.0 | 5 votes |
def __call__(self,inputs,seq_len = None): if self.call_cnt ==0: self.cell = LSTMCell(self.output_dim,initializer = self.initializer(dtype=inputs.dtype)) with tf.variable_scope(self.scope) as scope: #self.check_reuse(scope) #if self.call_cnt ==0: #self.cell = LSTMCell(self.output_dim,initializer = self.initializer) #cell = BasicLSTMCell(self.output_dim) print scope.reuse rnn.dynamic_rnn(self.cell,inputs,seq_len,dtype = inputs.dtype) print scope.reuse return rnn.dynamic_rnn(self.cell,inputs,seq_len,dtype = inputs.dtype) #return rnn.static_rnn(self.cell,inputs.as_list(),dtype = inputs.dtype)
Example #19
Source File: fused_rnn_cell.py From lambda-packs with MIT License | 5 votes |
def __call__(self, inputs, initial_state=None, dtype=None, sequence_length=None, scope=None): is_list = isinstance(inputs, list) if self._use_dynamic_rnn: if is_list: inputs = array_ops.stack(inputs) outputs, state = rnn.dynamic_rnn( self._cell, inputs, sequence_length=sequence_length, initial_state=initial_state, dtype=dtype, time_major=True, scope=scope) if is_list: # Convert outputs back to list outputs = array_ops.unstack(outputs) else: # non-dynamic rnn if not is_list: inputs = array_ops.unstack(inputs) outputs, state = rnn.static_rnn( self._cell, inputs, initial_state=initial_state, dtype=dtype, sequence_length=sequence_length, scope=scope) if not is_list: # Convert outputs back to tensor outputs = array_ops.stack(outputs) return outputs, state
Example #20
Source File: crf.py From lambda-packs with MIT License | 5 votes |
def crf_log_norm(inputs, sequence_lengths, transition_params): """Computes the normalization for a CRF. Args: inputs: A [batch_size, max_seq_len, num_tags] tensor of unary potentials to use as input to the CRF layer. sequence_lengths: A [batch_size] vector of true sequence lengths. transition_params: A [num_tags, num_tags] transition matrix. Returns: log_norm: A [batch_size] vector of normalizers for a CRF. """ # Split up the first and rest of the inputs in preparation for the forward # algorithm. first_input = array_ops.slice(inputs, [0, 0, 0], [-1, 1, -1]) first_input = array_ops.squeeze(first_input, [1]) rest_of_input = array_ops.slice(inputs, [0, 1, 0], [-1, -1, -1]) # Compute the alpha values in the forward algorithm in order to get the # partition function. forward_cell = CrfForwardRnnCell(transition_params) _, alphas = rnn.dynamic_rnn( cell=forward_cell, inputs=rest_of_input, sequence_length=sequence_lengths - 1, initial_state=first_input, dtype=dtypes.float32) log_norm = math_ops.reduce_logsumexp(alphas, [1]) return log_norm
Example #21
Source File: lstm1d.py From lambda-packs with MIT License | 5 votes |
def ndlstm_base_dynamic(inputs, noutput, scope=None, reverse=False): """Run an LSTM, either forward or backward. This is a 1D LSTM implementation using dynamic_rnn and the TensorFlow LSTM op. Args: inputs: input sequence (length, batch_size, ninput) noutput: depth of output scope: optional scope name reverse: run LSTM in reverse Returns: Output sequence (length, batch_size, noutput) """ with variable_scope.variable_scope(scope, "SeqLstm", [inputs]): # TODO(tmb) make batch size, sequence_length dynamic # example: sequence_length = tf.shape(inputs)[0] _, batch_size, _ = _shape(inputs) lstm_cell = rnn_cell.BasicLSTMCell(noutput, state_is_tuple=False) state = array_ops.zeros([batch_size, lstm_cell.state_size]) sequence_length = int(inputs.get_shape()[0]) sequence_lengths = math_ops.to_int64( array_ops.fill([batch_size], sequence_length)) if reverse: inputs = array_ops.reverse_v2(inputs, [0]) outputs, _ = rnn.dynamic_rnn( lstm_cell, inputs, sequence_lengths, state, time_major=True) if reverse: outputs = array_ops.reverse_v2(outputs, [0]) return outputs
Example #22
Source File: lstm1d.py From lambda-packs with MIT License | 5 votes |
def ndlstm_base(inputs, noutput, scope=None, reverse=False, dynamic=True): """Implements a 1D LSTM, either forward or backward. This is a base case for multidimensional LSTM implementations, which tend to be used differently from sequence-to-sequence implementations. For general 1D sequence to sequence transformations, you may want to consider another implementation from TF slim. Args: inputs: input sequence (length, batch_size, ninput) noutput: depth of output scope: optional scope name reverse: run LSTM in reverse dynamic: use dynamic_rnn Returns: Output sequence (length, batch_size, noutput) """ # TODO(tmb) maybe add option for other LSTM implementations, like # slim.rnn.basic_lstm_cell if dynamic: return ndlstm_base_dynamic(inputs, noutput, scope=scope, reverse=reverse) else: return ndlstm_base_unrolled(inputs, noutput, scope=scope, reverse=reverse)
Example #23
Source File: fused_rnn_cell.py From auto-alt-text-lambda-api with MIT License | 5 votes |
def __call__(self, inputs, initial_state=None, dtype=None, sequence_length=None, scope=None): is_list = isinstance(inputs, list) if self._use_dynamic_rnn: if is_list: inputs = array_ops.stack(inputs) outputs, state = rnn.dynamic_rnn( self._cell, inputs, sequence_length=sequence_length, initial_state=initial_state, dtype=dtype, time_major=True, scope=scope) if is_list: # Convert outputs back to list outputs = array_ops.unstack(outputs) else: # non-dynamic rnn if not is_list: inputs = array_ops.unstack(inputs) outputs, state = contrib_rnn.static_rnn(self._cell, inputs, initial_state=initial_state, dtype=dtype, sequence_length=sequence_length, scope=scope) if not is_list: # Convert outputs back to tensor outputs = array_ops.stack(outputs) return outputs, state
Example #24
Source File: crf.py From auto-alt-text-lambda-api with MIT License | 5 votes |
def crf_log_norm(inputs, sequence_lengths, transition_params): """Computes the normalization for a CRF. Args: inputs: A [batch_size, max_seq_len, num_tags] tensor of unary potentials to use as input to the CRF layer. sequence_lengths: A [batch_size] vector of true sequence lengths. transition_params: A [num_tags, num_tags] transition matrix. Returns: log_norm: A [batch_size] vector of normalizers for a CRF. """ # Split up the first and rest of the inputs in preparation for the forward # algorithm. first_input = array_ops.slice(inputs, [0, 0, 0], [-1, 1, -1]) first_input = array_ops.squeeze(first_input, [1]) rest_of_input = array_ops.slice(inputs, [0, 1, 0], [-1, -1, -1]) # Compute the alpha values in the forward algorithm in order to get the # partition function. forward_cell = CrfForwardRnnCell(transition_params) _, alphas = rnn.dynamic_rnn( cell=forward_cell, inputs=rest_of_input, sequence_length=sequence_lengths - 1, initial_state=first_input, dtype=dtypes.float32) log_norm = math_ops.reduce_logsumexp(alphas, [1]) return log_norm
Example #25
Source File: lstm1d.py From auto-alt-text-lambda-api with MIT License | 5 votes |
def ndlstm_base_dynamic(inputs, noutput, scope=None, reverse=False): """Run an LSTM, either forward or backward. This is a 1D LSTM implementation using dynamic_rnn and the TensorFlow LSTM op. Args: inputs: input sequence (length, batch_size, ninput) noutput: depth of output scope: optional scope name reverse: run LSTM in reverse Returns: Output sequence (length, batch_size, noutput) """ with variable_scope.variable_scope(scope, "SeqLstm", [inputs]): # TODO(tmb) make batch size, sequence_length dynamic # example: sequence_length = tf.shape(inputs)[0] _, batch_size, _ = _shape(inputs) lstm_cell = core_rnn_cell_impl.BasicLSTMCell(noutput, state_is_tuple=False) state = array_ops.zeros([batch_size, lstm_cell.state_size]) sequence_length = int(inputs.get_shape()[0]) sequence_lengths = math_ops.to_int64( array_ops.fill([batch_size], sequence_length)) if reverse: inputs = array_ops.reverse_v2(inputs, [0]) outputs, _ = rnn.dynamic_rnn( lstm_cell, inputs, sequence_lengths, state, time_major=True) if reverse: outputs = array_ops.reverse_v2(outputs, [0]) return outputs
Example #26
Source File: lstm1d.py From auto-alt-text-lambda-api with MIT License | 5 votes |
def ndlstm_base(inputs, noutput, scope=None, reverse=False, dynamic=True): """Implements a 1D LSTM, either forward or backward. This is a base case for multidimensional LSTM implementations, which tend to be used differently from sequence-to-sequence implementations. For general 1D sequence to sequence transformations, you may want to consider another implementation from TF slim. Args: inputs: input sequence (length, batch_size, ninput) noutput: depth of output scope: optional scope name reverse: run LSTM in reverse dynamic: use dynamic_rnn Returns: Output sequence (length, batch_size, noutput) """ # TODO(tmb) maybe add option for other LSTM implementations, like # slim.rnn.basic_lstm_cell if dynamic: return ndlstm_base_dynamic(inputs, noutput, scope=scope, reverse=reverse) else: return ndlstm_base_unrolled(inputs, noutput, scope=scope, reverse=reverse)
Example #27
Source File: test.py From NPNs with GNU General Public License v3.0 | 5 votes |
def __call__(self,inputs,seq_len = None): if self.call_cnt ==0: self.cell = LSTMCell(self.output_dim,initializer = self.initializer(dtype=inputs.dtype)) with tf.variable_scope(self.scope) as scope: #self.check_reuse(scope) #if self.call_cnt ==0: #self.cell = LSTMCell(self.output_dim,initializer = self.initializer) #cell = BasicLSTMCell(self.output_dim) print scope.reuse rnn.dynamic_rnn(self.cell,inputs,seq_len,dtype = inputs.dtype) print scope.reuse return rnn.dynamic_rnn(self.cell,inputs,seq_len,dtype = inputs.dtype) #return rnn.static_rnn(self.cell,inputs.as_list(),dtype = inputs.dtype)
Example #28
Source File: LSTMLayer.py From NPNs with GNU General Public License v3.0 | 5 votes |
def __call__(self,inputs,seq_len = None): if self.call_cnt ==0: self.cell = LSTMCell(self.output_dim,initializer = self.initializer(dtype=inputs.dtype)) with tf.variable_scope(self.scope) as scope: self.check_reuse(scope) #if self.call_cnt ==0: #self.cell = LSTMCell(self.output_dim,initializer = self.initializer) #cell = BasicLSTMCell(self.output_dim) return rnn.dynamic_rnn(self.cell,inputs,seq_len,dtype = inputs.dtype) #return rnn.static_rnn(self.cell,inputs.as_list(),dtype = inputs.dtype)
Example #29
Source File: TimeSeriesPredictor.py From Deep-Learning-with-TensorFlow-Second-Edition with MIT License | 5 votes |
def LSTM_Model(): """ :param x: inputs of size [T, batch_size, input_size] :param W: matrix of fully-connected output layer weights :param b: vector of fully-connected output layer biases """ cell = rnn_cell.BasicLSTMCell(hidden_dim) outputs, states = rnn.dynamic_rnn(cell, x, dtype=tf.float32) num_examples = tf.shape(x)[0] W_repeated = tf.tile(tf.expand_dims(W_out, 0), [num_examples, 1, 1]) out = tf.matmul(outputs, W_repeated) + b_out out = tf.squeeze(out) return out
Example #30
Source File: crf.py From tensorflow_nlp with Apache License 2.0 | 5 votes |
def crf_log_norm(inputs, sequence_lengths, transition_params): """Computes the normalization for a CRF. Args: inputs: A [batch_size, max_seq_len, num_tags] tensor of unary potentials to use as input to the CRF layer. sequence_lengths: A [batch_size] vector of true sequence lengths. transition_params: A [num_tags, num_tags] transition matrix. Returns: log_norm: A [batch_size] vector of normalizers for a CRF. """ # Split up the first and rest of the inputs in preparation for the forward # algorithm. first_input = array_ops.slice(inputs, [0, 0, 0], [-1, 1, -1]) first_input = array_ops.squeeze(first_input, [1]) rest_of_input = array_ops.slice(inputs, [0, 1, 0], [-1, -1, -1]) # Compute the alpha values in the forward algorithm in order to get the # partition function. forward_cell = CrfForwardRnnCell(transition_params) _, alphas = rnn.dynamic_rnn( cell=forward_cell, inputs=rest_of_input, sequence_length=sequence_lengths - 1, initial_state=first_input, dtype=dtypes.float32) log_norm = math_ops.reduce_logsumexp(alphas, [1]) return log_norm # 对数似然