Python tensorflow.reduce_sum() Examples
The following are 30
code examples of tensorflow.reduce_sum().
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
, or try the search function
.
Example #1
Source File: picklable_model.py From neural-fingerprinting with BSD 3-Clause "New" or "Revised" License | 6 votes |
def set_input_shape(self, input_shape): batch_size, dim = input_shape self.input_shape = [batch_size, dim] self.output_shape = [batch_size, self.num_hid] if self.init_mode == "norm": init = tf.random_normal([dim, self.num_hid], dtype=tf.float32) init = init / tf.sqrt(1e-7 + tf.reduce_sum(tf.square(init), axis=0, keep_dims=True)) init = init * self.init_scale elif self.init_mode == "uniform_unit_scaling": scale = np.sqrt(3. / dim) init = tf.random_uniform([dim, self.num_hid], dtype=tf.float32, minval=-scale, maxval=scale) else: raise ValueError(self.init_mode) self.W = PV(init) if self.use_bias: self.b = PV((np.zeros((self.num_hid,)) + self.init_b).astype('float32'))
Example #2
Source File: losses.py From DOTA_models with Apache License 2.0 | 6 votes |
def l1_regularizer(weight=1.0, scope=None): """Define a L1 regularizer. Args: weight: scale the loss by this factor. scope: Optional scope for name_scope. Returns: a regularizer function. """ def regularizer(tensor): with tf.name_scope(scope, 'L1Regularizer', [tensor]): l1_weight = tf.convert_to_tensor(weight, dtype=tensor.dtype.base_dtype, name='weight') return tf.multiply(l1_weight, tf.reduce_sum(tf.abs(tensor)), name='value') return regularizer
Example #3
Source File: bulk_component.py From DOTA_models with Apache License 2.0 | 6 votes |
def build_cross_entropy_loss(logits, gold): """Constructs a cross entropy from logits and one-hot encoded gold labels. Supports skipping rows where the gold label is the magic -1 value. Args: logits: float Tensor of scores. gold: int Tensor of one-hot labels. Returns: cost, correct, total: the total cost, the total number of correctly predicted labels, and the total number of valid labels. """ valid = tf.reshape(tf.where(tf.greater(gold, -1)), [-1]) gold = tf.gather(gold, valid) logits = tf.gather(logits, valid) correct = tf.reduce_sum(tf.to_int32(tf.nn.in_top_k(logits, gold, 1))) total = tf.size(gold) cost = tf.reduce_sum( tf.contrib.nn.deprecated_flipped_sparse_softmax_cross_entropy_with_logits( logits, tf.cast(gold, tf.int64))) / tf.cast(total, tf.float32) return cost, correct, total
Example #4
Source File: memory.py From DOTA_models with Apache License 2.0 | 6 votes |
def get_hash_slots(self, query): """Gets hashed-to buckets for batch of queries. Args: query: 2-d Tensor of query vectors. Returns: A list of hashed-to buckets for each hash function. """ binary_hash = [ tf.less(tf.matmul(query, self.hash_vecs[i], transpose_b=True), 0) for i in xrange(self.num_libraries)] hash_slot_idxs = [ tf.reduce_sum( tf.to_int32(binary_hash[i]) * tf.constant([[2 ** i for i in xrange(self.num_hashes)]], dtype=tf.int32), 1) for i in xrange(self.num_libraries)] return hash_slot_idxs
Example #5
Source File: interaction.py From icme2019 with MIT License | 6 votes |
def call(self, inputs, **kwargs): if K.ndim(inputs) != 3: raise ValueError( "Unexpected inputs dimensions %d, expect to be 3 dimensions" % (K.ndim(inputs))) concated_embeds_value = inputs square_of_sum = tf.square(tf.reduce_sum( concated_embeds_value, axis=1, keep_dims=True)) sum_of_square = tf.reduce_sum( concated_embeds_value * concated_embeds_value, axis=1, keep_dims=True) cross_term = square_of_sum - sum_of_square cross_term = 0.5 * tf.reduce_sum(cross_term, axis=2, keep_dims=False) return cross_term
Example #6
Source File: model.py From DOTA_models with Apache License 2.0 | 6 votes |
def compute_column_softmax(self, column_controller_vector, time_step): #compute softmax over all the columns using column controller vector column_controller_vector = tf.tile( tf.expand_dims(column_controller_vector, 1), [1, self.num_cols + self.num_word_cols, 1]) #max_cols * bs * d column_controller_vector = nn_utils.apply_dropout( column_controller_vector, self.utility.FLAGS.dropout, self.mode) self.full_column_hidden_vectors = tf.concat( axis=1, values=[self.column_hidden_vectors, self.word_column_hidden_vectors]) self.full_column_hidden_vectors += self.summary_text_entry_embeddings self.full_column_hidden_vectors = nn_utils.apply_dropout( self.full_column_hidden_vectors, self.utility.FLAGS.dropout, self.mode) column_logits = tf.reduce_sum( column_controller_vector * self.full_column_hidden_vectors, 2) + ( self.params["word_match_feature_column_name"] * self.batch_column_exact_match) + self.full_column_mask column_softmax = tf.nn.softmax(column_logits) #batch_size * max_cols return column_softmax
Example #7
Source File: tfutil.py From disentangling_conditional_gans with MIT License | 6 votes |
def _create_autosummary_var(name, value_expr): assert not _autosummary_finalized v = tf.cast(value_expr, tf.float32) if v.shape.ndims is 0: v = [v, np.float32(1.0)] elif v.shape.ndims is 1: v = [tf.reduce_sum(v), tf.cast(tf.shape(v)[0], tf.float32)] else: v = [tf.reduce_sum(v), tf.reduce_prod(tf.cast(tf.shape(v), tf.float32))] v = tf.cond(tf.is_finite(v[0]), lambda: tf.stack(v), lambda: tf.zeros(2)) with tf.control_dependencies(None): var = tf.Variable(tf.zeros(2)) # [numerator, denominator] update_op = tf.cond(tf.is_variable_initialized(var), lambda: tf.assign_add(var, v), lambda: tf.assign(var, v)) if name in _autosummary_vars: _autosummary_vars[name].append(var) else: _autosummary_vars[name] = [var] return update_op #---------------------------------------------------------------------------- # Call filewriter.add_summary() with all summaries in the default graph, # automatically finalizing and merging them on the first call.
Example #8
Source File: interaction.py From icme2019 with MIT License | 6 votes |
def call(self, inputs, **kwargs): if K.ndim(inputs[0]) != 3: raise ValueError( "Unexpected inputs dimensions %d, expect to be 3 dimensions" % (K.ndim(inputs))) embed_list = inputs row = [] col = [] num_inputs = len(embed_list) for i in range(num_inputs - 1): for j in range(i + 1, num_inputs): row.append(i) col.append(j) p = tf.concat([embed_list[idx] for idx in row], axis=1) # batch num_pairs k q = tf.concat([embed_list[idx] for idx in col], axis=1) inner_product = p * q if self.reduce_sum: inner_product = tf.reduce_sum( inner_product, axis=2, keep_dims=True) return inner_product
Example #9
Source File: model.py From neural-fingerprinting with BSD 3-Clause "New" or "Revised" License | 6 votes |
def set_input_shape(self, input_shape): batch_size, rows, cols, input_channels = input_shape kernel_shape = tuple(self.kernel_shape) + (input_channels, self.output_channels) assert len(kernel_shape) == 4 assert all(isinstance(e, int) for e in kernel_shape), kernel_shape init = tf.random_normal(kernel_shape, dtype=tf.float32) init = init / tf.sqrt(1e-7 + tf.reduce_sum(tf.square(init), axis=(0, 1, 2))) self.kernels = tf.Variable(init) self.b = tf.Variable( np.zeros((self.output_channels,)).astype('float32')) input_shape = list(input_shape) input_shape[0] = 1 dummy_batch = tf.zeros(input_shape) dummy_output = self.fprop(dummy_batch) output_shape = [int(e) for e in dummy_output.get_shape()] output_shape[0] = batch_size self.output_shape = tuple(output_shape)
Example #10
Source File: losses.py From DOTA_models with Apache License 2.0 | 6 votes |
def l1_l2_regularizer(weight_l1=1.0, weight_l2=1.0, scope=None): """Define a L1L2 regularizer. Args: weight_l1: scale the L1 loss by this factor. weight_l2: scale the L2 loss by this factor. scope: Optional scope for name_scope. Returns: a regularizer function. """ def regularizer(tensor): with tf.name_scope(scope, 'L1L2Regularizer', [tensor]): weight_l1_t = tf.convert_to_tensor(weight_l1, dtype=tensor.dtype.base_dtype, name='weight_l1') weight_l2_t = tf.convert_to_tensor(weight_l2, dtype=tensor.dtype.base_dtype, name='weight_l2') reg_l1 = tf.multiply(weight_l1_t, tf.reduce_sum(tf.abs(tensor)), name='value_l1') reg_l2 = tf.multiply(weight_l2_t, tf.nn.l2_loss(tensor), name='value_l2') return tf.add(reg_l1, reg_l2, name='value') return regularizer
Example #11
Source File: train_eval.py From DOTA_models with Apache License 2.0 | 5 votes |
def __init__(self): in_m, in_k = self.get_message_and_key() encrypted = self.model('alice', in_m, in_k) decrypted = self.model('bob', encrypted, in_k) eve_out = self.model('eve', encrypted, None) self.reset_eve_vars = tf.group( *[w.initializer for w in tf.get_collection('eve')]) optimizer = tf.train.AdamOptimizer(learning_rate=FLAGS.learning_rate) # Eve's goal is to decrypt the entire message: eve_bits_wrong = tf.reduce_sum( tf.abs((eve_out + 1.0) / 2.0 - (in_m + 1.0) / 2.0), [1]) self.eve_loss = tf.reduce_sum(eve_bits_wrong) self.eve_optimizer = optimizer.minimize( self.eve_loss, var_list=tf.get_collection('eve')) # Alice and Bob want to be accurate... self.bob_bits_wrong = tf.reduce_sum( tf.abs((decrypted + 1.0) / 2.0 - (in_m + 1.0) / 2.0), [1]) # ... and to not let Eve do better than guessing. self.bob_reconstruction_loss = tf.reduce_sum(self.bob_bits_wrong) bob_eve_error_deviation = tf.abs(float(TEXT_SIZE) / 2.0 - eve_bits_wrong) # 7-9 bits wrong is OK too, so we squish the error function a bit. # Without doing this, we often tend to hang out at 0.25 / 7.5 error, # and it seems bad to have continued, high communication error. bob_eve_loss = tf.reduce_sum( tf.square(bob_eve_error_deviation) / (TEXT_SIZE / 2)**2) # Rescale the losses to [0, 1] per example and combine. self.bob_loss = (self.bob_reconstruction_loss / TEXT_SIZE + bob_eve_loss) self.bob_optimizer = optimizer.minimize( self.bob_loss, var_list=(tf.get_collection('alice') + tf.get_collection('bob')))
Example #12
Source File: graph_builder.py From DOTA_models with Apache License 2.0 | 5 votes |
def _AddCostFunction(self, batch_size, gold_actions, logits): """Cross entropy plus L2 loss on weights and biases of the hidden layers.""" dense_golden = BatchedSparseToDense(gold_actions, self._num_actions) cross_entropy = tf.div( tf.reduce_sum( tf.nn.softmax_cross_entropy_with_logits( labels=dense_golden, logits=logits)), batch_size) regularized_params = [tf.nn.l2_loss(p) for k, p in self.params.items() if k.startswith('weights') or k.startswith('bias')] l2_loss = 1e-4 * tf.add_n(regularized_params) if regularized_params else 0 return {'cost': tf.add(cross_entropy, l2_loss, name='cost')}
Example #13
Source File: model.py From DOTA_models with Apache License 2.0 | 5 votes |
def error_computation(self): #computes the error of each example in a batch math_error = 0.5 * tf.square(tf.subtract(self.scalar_output, self.batch_answer)) #scale math error math_error = math_error / self.rows math_error = tf.minimum(math_error, self.utility.FLAGS.max_math_error * tf.ones(tf.shape(math_error), self.data_type)) self.init_print_error = tf.where( self.batch_gold_select, -1 * tf.log(self.batch_lookup_answer + 1e-300 + self.invert_select_full_mask), -1 * tf.log(1 - self.batch_lookup_answer)) * self.select_full_mask print_error_1 = self.init_print_error * tf.cast( tf.equal(self.batch_print_answer, 0.0), self.data_type) print_error = tf.reduce_sum(tf.reduce_sum((print_error_1), 1), 1) for val in range(1, 58): print_error += self.compute_lookup_error(val + 0.0) print_error = print_error * self.utility.FLAGS.print_cost / self.num_entries if (self.mode == "train"): error = tf.where( tf.logical_and( tf.not_equal(self.batch_answer, 0.0), tf.not_equal( tf.reduce_sum(tf.reduce_sum(self.batch_print_answer, 1), 1), 0.0)), self.soft_min(math_error, print_error), tf.where( tf.not_equal(self.batch_answer, 0.0), math_error, print_error)) else: error = tf.where( tf.logical_and( tf.equal(self.scalar_output, 0.0), tf.equal( tf.reduce_sum(tf.reduce_sum(self.batch_lookup_answer, 1), 1), 0.0)), tf.ones_like(math_error), tf.where( tf.equal(self.scalar_output, 0.0), print_error, math_error)) return error
Example #14
Source File: model.py From DOTA_models with Apache License 2.0 | 5 votes |
def compute_lookup_error(self, val): #computes lookup error. cond = tf.equal(self.batch_print_answer, val) inter = tf.where( cond, self.init_print_error, tf.tile( tf.reshape(tf.constant(1e10, self.data_type), [1, 1, 1]), [ self.batch_size, self.utility.FLAGS.max_word_cols + self.utility.FLAGS.max_number_cols, self.utility.FLAGS.max_elements ])) return tf.reduce_min(tf.reduce_min(inter, 1), 1) * tf.cast( tf.greater( tf.reduce_sum(tf.reduce_sum(tf.cast(cond, self.data_type), 1), 1), 0.0), self.data_type)
Example #15
Source File: model.py From DOTA_models with Apache License 2.0 | 5 votes |
def compute_max_or_min(self, select, maxi=True): #computes the argmax and argmin of a column with probabilistic row selection answer = tf.zeros([ self.batch_size, self.num_cols + self.num_word_cols, self.max_elements ], self.data_type) sum_prob = tf.zeros([self.batch_size, self.num_cols + self.num_word_cols], self.data_type) for j in range(self.max_elements): if (maxi): curr_pos = j else: curr_pos = self.max_elements - 1 - j select_index = tf.slice(self.full_processed_sorted_index_column, [0, 0, curr_pos], [self.batch_size, -1, 1]) select_mask = tf.equal( tf.tile( tf.expand_dims( tf.tile( tf.expand_dims(tf.range(self.max_elements), 0), [self.batch_size, 1]), 1), [1, self.num_cols + self.num_word_cols, 1]), select_index) curr_prob = tf.expand_dims(select, 1) * tf.cast( select_mask, self.data_type) * self.select_bad_number_mask curr_prob = curr_prob * tf.expand_dims((1 - sum_prob), 2) curr_prob = curr_prob * tf.expand_dims( tf.cast((1 - sum_prob) > 0.0, self.data_type), 2) answer = tf.where(select_mask, curr_prob, answer) sum_prob += tf.reduce_sum(curr_prob, 2) return answer
Example #16
Source File: network_units.py From DOTA_models with Apache License 2.0 | 5 votes |
def attention(self, last_layer, attention_tensor): """Compute the attention term for the network unit.""" h_tensor = attention_tensor # Compute the attentions. # Using feed-forward net to map the two inputs into the same dimension focus_tensor = tf.nn.tanh( tf.matmul( h_tensor, self._component.get_variable('attention_weights_pm_0'), name='h_x_pm') + self._component.get_variable('attention_bias_0')) context_tensor = tf.nn.tanh( tf.matmul( last_layer, self._component.get_variable('attention_weights_hm_0'), name='l_x_hm') + self._component.get_variable('attention_bias_1')) # The tf.multiply in the following expression broadcasts along the 0 dim: z_vec = tf.reduce_sum(tf.multiply(focus_tensor, context_tensor), 1) p_vec = tf.nn.softmax(tf.reshape(z_vec, [1, -1])) # The tf.multiply in the following expression broadcasts along the 1 dim: r_vec = tf.expand_dims( tf.reduce_sum( tf.multiply( h_tensor, tf.reshape(p_vec, [-1, 1]), name='time_together2'), 0), 0) return tf.matmul( r_vec, self._component.get_variable('attention_weights_pu'), name='time_together3')
Example #17
Source File: word2vec.py From DOTA_models with Apache License 2.0 | 5 votes |
def nce_loss(self, true_logits, sampled_logits): """Build the graph for the NCE loss.""" # cross-entropy(logits, labels) opts = self._options true_xent = tf.nn.sigmoid_cross_entropy_with_logits( labels=tf.ones_like(true_logits), logits=true_logits) sampled_xent = tf.nn.sigmoid_cross_entropy_with_logits( labels=tf.zeros_like(sampled_logits), logits=sampled_logits) # NCE-loss is the sum of the true and noise (sampled words) # contributions, averaged over the batch. nce_loss_tensor = (tf.reduce_sum(true_xent) + tf.reduce_sum(sampled_xent)) / opts.batch_size return nce_loss_tensor
Example #18
Source File: layers.py From DOTA_models with Apache License 2.0 | 5 votes |
def _num_labels(weights): """Number of 1's in weights. Returns 1. if 0.""" num_labels = tf.reduce_sum(weights) num_labels = tf.where(tf.equal(num_labels, 0.), 1., num_labels) return num_labels
Example #19
Source File: layers.py From DOTA_models with Apache License 2.0 | 5 votes |
def accuracy(logits, targets, weights): """Computes prediction accuracy. Args: logits: 2-D classifier logits [timesteps*batch_size, num_classes] targets: 1-D [timesteps*batch_size] integer tensor. weights: 1-D [timesteps*batch_size] float tensor. Returns: Accuracy: float scalar. """ with tf.name_scope('accuracy'): eq = tf.cast(tf.equal(predictions(logits), targets), tf.float32) return tf.identity( tf.reduce_sum(weights * eq) / _num_labels(weights), name='accuracy')
Example #20
Source File: layers.py From DOTA_models with Apache License 2.0 | 5 votes |
def classification_loss(logits, labels, weights): """Computes cross entropy loss between logits and labels. Args: logits: 2-D [timesteps*batch_size, m] float tensor, where m=1 if num_classes=2, otherwise m=num_classes. labels: 1-D [timesteps*batch_size] integer tensor. weights: 1-D [timesteps*batch_size] float tensor. Returns: Loss scalar of type float. """ inner_dim = logits.get_shape().as_list()[-1] with tf.name_scope('classifier_loss'): # Logistic loss if inner_dim == 1: loss = tf.nn.sigmoid_cross_entropy_with_logits( logits=tf.squeeze(logits), labels=tf.cast(labels, tf.float32)) # Softmax loss else: loss = tf.nn.sparse_softmax_cross_entropy_with_logits( logits=logits, labels=labels) num_lab = _num_labels(weights) tf.summary.scalar('num_labels', num_lab) return tf.identity( tf.reduce_sum(weights * loss) / num_lab, name='classification_xentropy')
Example #21
Source File: layers.py From DOTA_models with Apache License 2.0 | 5 votes |
def call(self, inputs): x, labels, weights = inputs if self.num_candidate_samples > -1: assert self.vocab_freqs is not None labels = tf.expand_dims(labels, -1) sampled = tf.nn.fixed_unigram_candidate_sampler( true_classes=labels, num_true=1, num_sampled=self.num_candidate_samples, unique=True, range_max=self.vocab_size, unigrams=self.vocab_freqs) lm_loss = tf.nn.sampled_softmax_loss( weights=tf.transpose(self.lin_w), biases=self.lin_b, labels=labels, inputs=x, num_sampled=self.num_candidate_samples, num_classes=self.vocab_size, sampled_values=sampled) else: logits = tf.matmul(x, self.lin_w) + self.lin_b lm_loss = tf.nn.sparse_softmax_cross_entropy_with_logits( logits=logits, labels=labels) lm_loss = tf.identity( tf.reduce_sum(lm_loss * weights) / _num_labels(weights), name='lm_xentropy_loss') return lm_loss
Example #22
Source File: decoder.py From neural-combinatorial-optimization-rl-tensorflow with MIT License | 5 votes |
def attention(self,ref,query): # Attending mechanism encoded_ref_g = tf.nn.conv1d(ref, self.W_ref_g, 1, "VALID", name="encoded_ref_g") # [Batch size, seq_length, n_hidden] encoded_query_g = tf.expand_dims(tf.matmul(query, self.W_q_g, name="encoded_query_g"), 1) # [Batch size, 1, n_hidden] scores_g = tf.reduce_sum(self.v_g * tf.tanh(encoded_ref_g + encoded_query_g), [-1], name="scores_g") # [Batch size, seq_length] # Attend to current city and cities to visit only (Apply mask) attention_g = tf.nn.softmax(scores_g - 100000000.*(self.mask - self.current_city),name="attention_g") self.attending.append(attention_g) # 1 glimpse = Linear combination of reference vectors (defines new query vector) glimpse = tf.multiply(ref, tf.expand_dims(attention_g,2)) glimpse = tf.reduce_sum(glimpse,1) + query # Pointing mechanism with 1 glimpse encoded_ref = tf.nn.conv1d(ref, self.W_ref, 1, "VALID", name="encoded_ref") # [Batch size, seq_length, n_hidden] encoded_query = tf.expand_dims(tf.matmul(glimpse, self.W_q, name="encoded_query"), 1) # [Batch size, 1, n_hidden] scores = tf.reduce_sum(self.v * tf.tanh(encoded_ref + encoded_query), [-1], name="scores") # [Batch size, seq_length] if self.inference_mode == True: scores = scores/self.temperature # control diversity of sampling (inference mode) scores = self.C*tf.tanh(scores) # control entropy # Point to cities to visit only (Apply mask) masked_scores = scores - 100000000.*self.mask # [Batch size, seq_length] pointing = tf.nn.softmax(masked_scores, name="attention") # [Batch size, Seq_length] self.pointing.append(pointing) return masked_scores # One pass of the decode mechanism
Example #23
Source File: adversarial_losses.py From DOTA_models with Apache License 2.0 | 5 votes |
def _kl_divergence_with_logits(q_logits, p_logits, weights): """Returns weighted KL divergence between distributions q and p. Args: q_logits: logits for 1st argument of KL divergence shape [num_timesteps * batch_size, num_classes] if num_classes > 2, and [num_timesteps * batch_size] if num_classes == 2. p_logits: logits for 2nd argument of KL divergence with same shape q_logits. weights: 1-D float tensor with shape [num_timesteps * batch_size]. Elements should be 1.0 only on end of sequences Returns: KL: float scalar. """ # For logistic regression if FLAGS.num_classes == 2: q = tf.nn.sigmoid(q_logits) kl = (-tf.nn.sigmoid_cross_entropy_with_logits(logits=q_logits, labels=q) + tf.nn.sigmoid_cross_entropy_with_logits(logits=p_logits, labels=q)) kl = tf.squeeze(kl) # For softmax regression else: q = tf.nn.softmax(q_logits) kl = tf.reduce_sum( q * (tf.nn.log_softmax(q_logits) - tf.nn.log_softmax(p_logits)), 1) num_labels = tf.reduce_sum(weights) num_labels = tf.where(tf.equal(num_labels, 0.), 1., num_labels) kl.get_shape().assert_has_rank(1) weights.get_shape().assert_has_rank(1) loss = tf.identity(tf.reduce_sum(weights * kl) / num_labels, name='kl') return loss
Example #24
Source File: adversarial_losses.py From DOTA_models with Apache License 2.0 | 5 votes |
def _scale_l2(x, norm_length): # shape(x) = (batch, num_timesteps, d) # Divide x by max(abs(x)) for a numerically stable L2 norm. # 2norm(x) = a * 2norm(x/a) # Scale over the full sequence, dims (1, 2) alpha = tf.reduce_max(tf.abs(x), (1, 2), keep_dims=True) + 1e-12 l2_norm = alpha * tf.sqrt( tf.reduce_sum(tf.pow(x / alpha, 2), (1, 2), keep_dims=True) + 1e-6) x_unit = x / l2_norm return norm_length * x_unit
Example #25
Source File: seq2seq_lib.py From DOTA_models with Apache License 2.0 | 5 votes |
def sampled_sequence_loss(inputs, targets, weights, loss_function, average_across_timesteps=True, average_across_batch=True, name=None): """Weighted cross-entropy loss for a sequence of logits, batch-collapsed. Args: inputs: List of 2D Tensors of shape [batch_size x hid_dim]. targets: List of 1D batch-sized int32 Tensors of the same length as inputs. weights: List of 1D batch-sized float-Tensors of the same length as inputs. loss_function: Sampled softmax function (inputs, labels) -> loss average_across_timesteps: If set, divide the returned cost by the total label weight. average_across_batch: If set, divide the returned cost by the batch size. name: Optional name for this operation, defaults to 'sequence_loss'. Returns: A scalar float Tensor: The average log-perplexity per symbol (weighted). Raises: ValueError: If len(inputs) is different from len(targets) or len(weights). """ with tf.name_scope(values=inputs + targets + weights, name=name, default_name='sampled_sequence_loss'): cost = tf.reduce_sum(sequence_loss_by_example( inputs, targets, weights, loss_function, average_across_timesteps=average_across_timesteps)) if average_across_batch: batch_size = tf.shape(targets[0])[0] return cost / tf.cast(batch_size, tf.float32) else: return cost
Example #26
Source File: layers.py From ARU-Net with GNU General Public License v2.0 | 5 votes |
def horizontal_cell(images, num_filters_out, cell_fw, cell_bw, keep_prob=1.0, scope=None): """Run an LSTM bidirectionally over all the rows of each image. Args: images: (num_images, height, width, depth) tensor num_filters_out: output depth scope: optional scope name Returns: (num_images, height, width, num_filters_out) tensor, where """ with tf.variable_scope(scope, "HorizontalGru", [images]): sequence = images_to_sequence(images) shapeT = tf.shape(sequence) sequence_length = shapeT[0] batch_sizeRNN = shapeT[1] sequence_lengths = tf.to_int64( tf.fill([batch_sizeRNN], sequence_length)) forward_drop1 = DropoutWrapper(cell_fw, output_keep_prob=keep_prob) backward_drop1 = DropoutWrapper(cell_bw, output_keep_prob=keep_prob) rnn_out1, _ = tf.nn.bidirectional_dynamic_rnn(forward_drop1, backward_drop1, sequence, dtype=tf.float32, sequence_length=sequence_lengths, time_major=True, swap_memory=True, scope=scope) rnn_out1 = tf.concat(rnn_out1, 2) rnn_out1 = tf.reshape(rnn_out1, shape=[-1, batch_sizeRNN, 2, num_filters_out]) output_sequence = tf.reduce_sum(rnn_out1, axis=2) batch_size=tf.shape(images)[0] output = sequence_to_images(output_sequence, batch_size) return output
Example #27
Source File: actor.py From neural-combinatorial-optimization-rl-tensorflow with MIT License | 5 votes |
def build_reward(self): with tf.name_scope('permutations'): # Reorder input % tour self.ordered_input_ = [] for input_, path in zip(tf.unstack(self.input_,axis=0), tf.unstack(self.positions,axis=0)): # Unstack % batch axis self.ordered_input_.append(tf.gather_nd(input_,tf.expand_dims(path,1))) self.ordered_input_ = tf.transpose(tf.stack(self.ordered_input_,0),[2,1,0]) # [batch size, seq length +1 , features] to [features, seq length +1, batch_size] Rq: +1 because end = start = first_city # Ordered coordinates ordered_x_ = self.ordered_input_[0] # [seq length +1, batch_size] delta_x2 = tf.transpose(tf.square(ordered_x_[1:]-ordered_x_[:-1]),[1,0]) # [batch_size, seq length] delta_x**2 ordered_y_ = self.ordered_input_[1] # [seq length +1, batch_size] delta_y2 = tf.transpose(tf.square(ordered_y_[1:]-ordered_y_[:-1]),[1,0]) # [batch_size, seq length] delta_y**2 with tf.name_scope('environment'): # Get tour length (euclidean distance) inter_city_distances = tf.sqrt(delta_x2+delta_y2) # sqrt(delta_x**2 + delta_y**2) this is the euclidean distance between each city: depot --> ... ---> depot [batch_size, seq length] self.distances = tf.reduce_sum(inter_city_distances, axis=1) # [batch_size] #variable_summaries('tour_length',self.distances, with_max_min = True) # Define reward from tour length self.reward = tf.cast(self.distances,tf.float32) variable_summaries('reward',self.reward, with_max_min = True)
Example #28
Source File: decoder.py From neural-combinatorial-optimization-rl-tensorflow with MIT License | 5 votes |
def attention(self,ref,query): # Attending mechanism encoded_ref_g = tf.nn.conv1d(ref, self.W_ref_g, 1, "VALID", name="encoded_ref_g") # [Batch size, seq_length, n_hidden] encoded_query_g = tf.expand_dims(tf.matmul(query, self.W_q_g, name="encoded_query_g"), 1) # [Batch size, 1, n_hidden] scores_g = tf.reduce_sum(self.v_g * tf.tanh(encoded_ref_g + encoded_query_g), [-1], name="scores_g") # [Batch size, seq_length] # Attend to current city and cities to visit only (Apply mask) attention_g = tf.nn.softmax(scores_g - 100000000.*(self.mask - self.first_city_hot),name="attention_g") ########### self.attending.append(attention_g) # 1 glimpse = Linear combination of reference vectors (defines new query vector) glimpse = tf.multiply(ref, tf.expand_dims(attention_g,2)) glimpse = tf.reduce_sum(glimpse,1)+query ########### Residual connection # Pointing mechanism with 1 glimpse encoded_ref = tf.nn.conv1d(ref, self.W_ref, 1, "VALID", name="encoded_ref") # [Batch size, seq_length, n_hidden] encoded_query = tf.expand_dims(tf.matmul(glimpse, self.W_q, name="encoded_query"), 1) # [Batch size, 1, n_hidden] scores = tf.reduce_sum(self.v * tf.tanh(encoded_ref + encoded_query), [-1], name="scores") # [Batch size, seq_length] if self.inference_mode == True: scores = scores/self.temperature # control diversity of sampling (inference mode) scores = self.C*tf.tanh(scores) # control entropy # Point to cities to visit only (Apply mask) masked_scores = scores - 100000000.*self.mask # [Batch size, seq_length] pointing = tf.nn.softmax(masked_scores, name="attention") # [Batch size, Seq_length] self.pointing.append(pointing) return masked_scores # One pass of the decode mechanism
Example #29
Source File: tf_logits.py From Black-Box-Audio with MIT License | 5 votes |
def compute_mfcc(audio, **kwargs): """ Compute the MFCC for a given audio waveform. This is identical to how DeepSpeech does it, but does it all in TensorFlow so that we can differentiate through it. """ batch_size, size = audio.get_shape().as_list() audio = tf.cast(audio, tf.float32) # 1. Pre-emphasizer, a high-pass filter audio = tf.concat((audio[:, :1], audio[:, 1:] - 0.97*audio[:, :-1], np.zeros((batch_size,1000),dtype=np.float32)), 1) # 2. windowing into frames of 320 samples, overlapping windowed = tf.stack([audio[:, i:i+400] for i in range(0,size-320,160)],1) # 3. Take the FFT to convert to frequency space ffted = tf.spectral.rfft(windowed, [512]) ffted = 1.0 / 512 * tf.square(tf.abs(ffted)) # 4. Compute the Mel windowing of the FFT energy = tf.reduce_sum(ffted,axis=2)+1e-30 filters = np.load("filterbanks.npy").T feat = tf.matmul(ffted, np.array([filters]*batch_size,dtype=np.float32))+1e-30 # 5. Take the DCT again, because why not feat = tf.log(feat) feat = tf.spectral.dct(feat, type=2, norm='ortho')[:,:,:26] # 6. Amplify high frequencies for some reason _,nframes,ncoeff = feat.get_shape().as_list() n = np.arange(ncoeff) lift = 1 + (22/2.)*np.sin(np.pi*n/22) feat = lift*feat width = feat.get_shape().as_list()[1] # 7. And now stick the energy next to the features feat = tf.concat((tf.reshape(tf.log(energy),(-1,width,1)), feat[:, :, 1:]), axis=2) return feat
Example #30
Source File: metrics.py From DOTA_models with Apache License 2.0 | 5 votes |
def char_accuracy(predictions, targets, rej_char, streaming=False): """Computes character level accuracy. Both predictions and targets should have the same shape [batch_size x seq_length]. Args: predictions: predicted characters ids. targets: ground truth character ids. rej_char: the character id used to mark an empty element (end of sequence). streaming: if True, uses the streaming mean from the slim.metric module. Returns: a update_ops for execution and value tensor whose value on evaluation returns the total character accuracy. """ with tf.variable_scope('CharAccuracy'): predictions.get_shape().assert_is_compatible_with(targets.get_shape()) targets = tf.to_int32(targets) const_rej_char = tf.constant(rej_char, shape=targets.get_shape()) weights = tf.to_float(tf.not_equal(targets, const_rej_char)) correct_chars = tf.to_float(tf.equal(predictions, targets)) accuracy_per_example = tf.div( tf.reduce_sum(tf.multiply(correct_chars, weights), 1), tf.reduce_sum(weights, 1)) if streaming: return tf.contrib.metrics.streaming_mean(accuracy_per_example) else: return tf.reduce_mean(accuracy_per_example)