Python tensorflow.reduce_mean() Examples
The following are 30
code examples of tensorflow.reduce_mean().
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: optimization_test.py From BERT-Classification-Tutorial with Apache License 2.0 | 6 votes |
def test_adam(self): with self.test_session() as sess: w = tf.get_variable( "w", shape=[3], initializer=tf.constant_initializer([0.1, -0.2, -0.1])) x = tf.constant([0.4, 0.2, -0.5]) loss = tf.reduce_mean(tf.square(x - w)) tvars = tf.trainable_variables() grads = tf.gradients(loss, tvars) global_step = tf.train.get_or_create_global_step() optimizer = optimization.AdamWeightDecayOptimizer(learning_rate=0.2) train_op = optimizer.apply_gradients(zip(grads, tvars), global_step) init_op = tf.group(tf.global_variables_initializer(), tf.local_variables_initializer()) sess.run(init_op) for _ in range(100): sess.run(train_op) w_np = sess.run(w) self.assertAllClose(w_np.flat, [0.4, 0.2, -0.5], rtol=1e-2, atol=1e-2)
Example #2
Source File: networks.py From disentangling_conditional_gans with MIT License | 6 votes |
def minibatch_stddev_layer(x, group_size=4): with tf.variable_scope('MinibatchStddev'): group_size = tf.minimum(group_size, tf.shape(x)[0]) # Minibatch must be divisible by (or smaller than) group_size. s = x.shape # [NCHW] Input shape. y = tf.reshape(x, [group_size, -1, s[1], s[2], s[3]]) # [GMCHW] Split minibatch into M groups of size G. y = tf.cast(y, tf.float32) # [GMCHW] Cast to FP32. y -= tf.reduce_mean(y, axis=0, keep_dims=True) # [GMCHW] Subtract mean over group. y = tf.reduce_mean(tf.square(y), axis=0) # [MCHW] Calc variance over group. y = tf.sqrt(y + 1e-8) # [MCHW] Calc stddev over group. y = tf.reduce_mean(y, axis=[1,2,3], keep_dims=True) # [M111] Take average over fmaps and pixels. y = tf.cast(y, x.dtype) # [M111] Cast back to original data type. y = tf.tile(y, [group_size, 1, s[2], s[3]]) # [N1HW] Replicate over group and pixels. return tf.concat([x, y], axis=1) # [NCHW] Append as new fmap. #---------------------------------------------------------------------------- # Generator network used in the paper.
Example #3
Source File: losses.py From DOTA_models with Apache License 2.0 | 6 votes |
def maximum_mean_discrepancy(x, y, kernel=utils.gaussian_kernel_matrix): r"""Computes the Maximum Mean Discrepancy (MMD) of two samples: x and y. Maximum Mean Discrepancy (MMD) is a distance-measure between the samples of the distributions of x and y. Here we use the kernel two sample estimate using the empirical mean of the two distributions. MMD^2(P, Q) = || \E{\phi(x)} - \E{\phi(y)} ||^2 = \E{ K(x, x) } + \E{ K(y, y) } - 2 \E{ K(x, y) }, where K = <\phi(x), \phi(y)>, is the desired kernel function, in this case a radial basis kernel. Args: x: a tensor of shape [num_samples, num_features] y: a tensor of shape [num_samples, num_features] kernel: a function which computes the kernel in MMD. Defaults to the GaussianKernelMatrix. Returns: a scalar denoting the squared maximum mean discrepancy loss. """ with tf.name_scope('MaximumMeanDiscrepancy'): # \E{ K(x, x) } + \E{ K(y, y) } - 2 \E{ K(x, y) } cost = tf.reduce_mean(kernel(x, x)) cost += tf.reduce_mean(kernel(y, y)) cost -= 2 * tf.reduce_mean(kernel(x, y)) # We do not allow the loss to become negative. cost = tf.where(cost > 0, cost, 0, name='value') return cost
Example #4
Source File: model.py From Neural-LP with MIT License | 6 votes |
def _build_input(self): self.tails = tf.placeholder(tf.int32, [None]) self.heads = tf.placeholder(tf.int32, [None]) self.targets = tf.one_hot(indices=self.heads, depth=self.num_entity) if not self.query_is_language: self.queries = tf.placeholder(tf.int32, [None, self.num_step]) self.query_embedding_params = tf.Variable(self._random_uniform_unit( self.num_query + 1, # <END> token self.query_embed_size), dtype=tf.float32) rnn_inputs = tf.nn.embedding_lookup(self.query_embedding_params, self.queries) else: self.queries = tf.placeholder(tf.int32, [None, self.num_step, self.num_word]) self.vocab_embedding_params = tf.Variable(self._random_uniform_unit( self.num_vocab + 1, # <END> token self.vocab_embed_size), dtype=tf.float32) embedded_query = tf.nn.embedding_lookup(self.vocab_embedding_params, self.queries) rnn_inputs = tf.reduce_mean(embedded_query, axis=2) return rnn_inputs
Example #5
Source File: face_attack.py From Adversarial-Face-Attack with GNU General Public License v3.0 | 6 votes |
def build_pgd_attack(self, eps): victim_embeddings = tf.constant(self.victim_embeddings, dtype=tf.float32) def one_step_attack(image, grad): """ core components of this attack are: (a) PGD adversarial attack (https://arxiv.org/pdf/1706.06083.pdf) (b) momentum (https://arxiv.org/pdf/1710.06081.pdf) (c) input diversity (https://arxiv.org/pdf/1803.06978.pdf) """ orig_image = image image = self.structure(image) image = (image - 127.5) / 128.0 image = image + tf.random_uniform(tf.shape(image), minval=-1e-2, maxval=1e-2) prelogits, _ = self.network.inference(image, 1.0, False, bottleneck_layer_size=512) embeddings = tf.nn.l2_normalize(prelogits, 1, 1e-10, name='embeddings') embeddings = tf.reshape(embeddings[0], [512, 1]) objective = tf.reduce_mean(tf.matmul(victim_embeddings, embeddings)) # to be maximized noise, = tf.gradients(objective, orig_image) noise = noise / tf.reduce_mean(tf.abs(noise), [1, 2, 3], keep_dims=True) noise = 0.9 * grad + noise adv = tf.clip_by_value(orig_image + tf.sign(noise) * 1.0, lower_bound, upper_bound) return adv, noise input = tf.to_float(self.image_batch) lower_bound = tf.clip_by_value(input - eps, 0, 255.) upper_bound = tf.clip_by_value(input + eps, 0, 255.) with tf.variable_scope(tf.get_variable_scope(), reuse=tf.AUTO_REUSE): adv, _ = tf.while_loop( lambda _, __: True, one_step_attack, (input, tf.zeros_like(input)), back_prop=False, maximum_iterations=100, parallel_iterations=1) self.adv_image = adv return adv
Example #6
Source File: model.py From DOTA_models with Apache License 2.0 | 6 votes |
def _BuildLoss(self): # 1. reconstr_loss seems doesn't do better than l2 loss. # 2. Only works when using reduce_mean. reduce_sum doesn't work. # 3. It seems kl loss doesn't play an important role. self.loss = 0 with tf.variable_scope('loss'): if self.params['l2_loss']: l2_loss = tf.reduce_mean(tf.square(self.diff_output - self.diffs[1])) tf.summary.scalar('l2_loss', l2_loss) self.loss += l2_loss if self.params['reconstr_loss']: reconstr_loss = (-tf.reduce_mean( self.diffs[1] * (1e-10 + self.diff_output) + (1-self.diffs[1]) * tf.log(1e-10 + 1 - self.diff_output))) reconstr_loss = tf.check_numerics(reconstr_loss, 'reconstr_loss') tf.summary.scalar('reconstr_loss', reconstr_loss) self.loss += reconstr_loss if self.params['kl_loss']: kl_loss = (0.5 * tf.reduce_mean( tf.square(self.z_mean) + tf.square(self.z_stddev) - 2 * self.z_stddev_log - 1)) tf.summary.scalar('kl_loss', kl_loss) self.loss += kl_loss tf.summary.scalar('loss', self.loss)
Example #7
Source File: algorithm.py From soccer-matlab with BSD 2-Clause "Simplified" License | 6 votes |
def _define_experience(self, observ, action, reward): """Implement the branch of experience() entered during training.""" update_filters = tf.summary.merge([ self._observ_filter.update(observ), self._reward_filter.update(reward)]) with tf.control_dependencies([update_filters]): if self._config.train_on_agent_action: # NOTE: Doesn't seem to change much. action = self._last_action batch = observ, action, self._last_mean, self._last_logstd, reward append = self._episodes.append(batch, tf.range(len(self._batch_env))) with tf.control_dependencies([append]): norm_observ = self._observ_filter.transform(observ) norm_reward = tf.reduce_mean(self._reward_filter.transform(reward)) # pylint: disable=g-long-lambda summary = tf.cond(self._should_log, lambda: tf.summary.merge([ update_filters, self._observ_filter.summary(), self._reward_filter.summary(), tf.summary.scalar('memory_size', self._memory_index), tf.summary.histogram('normalized_observ', norm_observ), tf.summary.histogram('action', self._last_action), tf.summary.scalar('normalized_reward', norm_reward)]), str) return summary
Example #8
Source File: ops_test.py From DOTA_models with Apache License 2.0 | 6 votes |
def test_position_sensitive_with_single_bin(self): num_spatial_bins = [1, 1] image_shape = [2, 3, 3, 4] crop_size = [2, 2] image = tf.random_uniform(image_shape) boxes = tf.random_uniform((6, 4)) box_ind = tf.constant([0, 0, 0, 1, 1, 1], dtype=tf.int32) # When a single bin is used, position-sensitive crop and pool should be # the same as non-position sensitive crop and pool. crop = tf.image.crop_and_resize(image, boxes, box_ind, crop_size) crop_and_pool = tf.reduce_mean(crop, [1, 2], keep_dims=True) ps_crop_and_pool = ops.position_sensitive_crop_regions( image, boxes, box_ind, crop_size, num_spatial_bins, global_pool=True) with self.test_session() as sess: expected_output, output = sess.run((crop_and_pool, ps_crop_and_pool)) self.assertAllClose(output, expected_output)
Example #9
Source File: loss.py From neural-fingerprinting with BSD 3-Clause "New" or "Revised" License | 6 votes |
def fprop(self, x, y, **kwargs): kwargs.update(self.kwargs) if self.attack is not None: x = x, self.attack(x) else: x = x, # Catching RuntimeError: Variable -= value not supported by tf.eager. try: y -= self.smoothing * (y - 1. / tf.cast(y.shape[-1], y.dtype)) except RuntimeError: y.assign_sub(self.smoothing * (y - 1. / tf.cast(y.shape[-1], y.dtype))) logits = [self.model.get_logits(x, **kwargs) for x in x] loss = sum( tf.reduce_mean(softmax_cross_entropy_with_logits(labels=y, logits=logit)) for logit in logits) return loss
Example #10
Source File: cifar10.py From DOTA_models with Apache License 2.0 | 6 votes |
def loss(logits, labels): """Add L2Loss to all the trainable variables. Add summary for "Loss" and "Loss/avg". Args: logits: Logits from inference(). labels: Labels from distorted_inputs or inputs(). 1-D tensor of shape [batch_size] Returns: Loss tensor of type float. """ # Calculate the average cross entropy loss across the batch. labels = tf.cast(labels, tf.int64) cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits( labels=labels, logits=logits, name='cross_entropy_per_example') cross_entropy_mean = tf.reduce_mean(cross_entropy, name='cross_entropy') tf.add_to_collection('losses', cross_entropy_mean) # The total loss is defined as the cross entropy loss plus all of the weight # decay terms (L2 loss). return tf.add_n(tf.get_collection('losses'), name='total_loss')
Example #11
Source File: vgg_test.py From DOTA_models with Apache License 2.0 | 6 votes |
def testTrainEvalWithReuse(self): train_batch_size = 2 eval_batch_size = 1 train_height, train_width = 224, 224 eval_height, eval_width = 256, 256 num_classes = 1000 with self.test_session(): train_inputs = tf.random_uniform( (train_batch_size, train_height, train_width, 3)) logits, _ = vgg.vgg_19(train_inputs) self.assertListEqual(logits.get_shape().as_list(), [train_batch_size, num_classes]) tf.get_variable_scope().reuse_variables() eval_inputs = tf.random_uniform( (eval_batch_size, eval_height, eval_width, 3)) logits, _ = vgg.vgg_19(eval_inputs, is_training=False, spatial_squeeze=False) self.assertListEqual(logits.get_shape().as_list(), [eval_batch_size, 2, 2, num_classes]) logits = tf.reduce_mean(logits, [1, 2]) predictions = tf.argmax(logits, 1) self.assertEquals(predictions.get_shape().as_list(), [eval_batch_size])
Example #12
Source File: loss.py From neural-fingerprinting with BSD 3-Clause "New" or "Revised" License | 6 votes |
def fprop(self, x, y, **kwargs): x_adv = self.attack(x) d1 = self.model.fprop(x, **kwargs) d2 = self.model.fprop(x_adv, **kwargs) pairing_loss = [tf.reduce_mean(tf.square(a - b)) for a, b in zip(d1[Model.O_FEATURES], d2[Model.O_FEATURES])] pairing_loss = tf.reduce_mean(pairing_loss) loss = softmax_cross_entropy_with_logits( labels=y, logits=d1[Model.O_LOGITS]) loss += softmax_cross_entropy_with_logits( labels=y, logits=d2[Model.O_LOGITS]) warnings.warn("LossFeaturePairing is deprecated, switch to " "FeaturePairing. LossFeaturePairing may be removed " "on or after 2019-03-06.") return loss + self.weight * pairing_loss
Example #13
Source File: vgg_test.py From DOTA_models with Apache License 2.0 | 6 votes |
def testTrainEvalWithReuse(self): train_batch_size = 2 eval_batch_size = 1 train_height, train_width = 224, 224 eval_height, eval_width = 256, 256 num_classes = 1000 with self.test_session(): train_inputs = tf.random_uniform( (train_batch_size, train_height, train_width, 3)) logits, _ = vgg.vgg_16(train_inputs) self.assertListEqual(logits.get_shape().as_list(), [train_batch_size, num_classes]) tf.get_variable_scope().reuse_variables() eval_inputs = tf.random_uniform( (eval_batch_size, eval_height, eval_width, 3)) logits, _ = vgg.vgg_16(eval_inputs, is_training=False, spatial_squeeze=False) self.assertListEqual(logits.get_shape().as_list(), [eval_batch_size, 2, 2, num_classes]) logits = tf.reduce_mean(logits, [1, 2]) predictions = tf.argmax(logits, 1) self.assertEquals(predictions.get_shape().as_list(), [eval_batch_size])
Example #14
Source File: vgg_test.py From DOTA_models with Apache License 2.0 | 6 votes |
def testTrainEvalWithReuse(self): train_batch_size = 2 eval_batch_size = 1 train_height, train_width = 224, 224 eval_height, eval_width = 256, 256 num_classes = 1000 with self.test_session(): train_inputs = tf.random_uniform( (train_batch_size, train_height, train_width, 3)) logits, _ = vgg.vgg_a(train_inputs) self.assertListEqual(logits.get_shape().as_list(), [train_batch_size, num_classes]) tf.get_variable_scope().reuse_variables() eval_inputs = tf.random_uniform( (eval_batch_size, eval_height, eval_width, 3)) logits, _ = vgg.vgg_a(eval_inputs, is_training=False, spatial_squeeze=False) self.assertListEqual(logits.get_shape().as_list(), [eval_batch_size, 2, 2, num_classes]) logits = tf.reduce_mean(logits, [1, 2]) predictions = tf.argmax(logits, 1) self.assertEquals(predictions.get_shape().as_list(), [eval_batch_size])
Example #15
Source File: algorithm.py From soccer-matlab with BSD 2-Clause "Simplified" License | 6 votes |
def _update_value(self, observ, reward, length): """Perform multiple update steps of the value baseline. We need to decide for the summary of one iteration, and thus choose the one after half of the iterations. Args: observ: Sequences of observations. reward: Sequences of reward. length: Batch of sequence lengths. Returns: Summary tensor. """ with tf.name_scope('update_value'): loss, summary = tf.scan( lambda _1, _2: self._update_value_step(observ, reward, length), tf.range(self._config.update_epochs_value), [0., ''], parallel_iterations=1) print_loss = tf.Print(0, [tf.reduce_mean(loss)], 'value loss: ') with tf.control_dependencies([loss, print_loss]): return summary[self._config.update_epochs_value // 2]
Example #16
Source File: 2_tf_linear.py From deep-learning-note with MIT License | 6 votes |
def createLinearModel(dimension): np.random.seed(1024) # 定义 x 和 y x = tf.placeholder(tf.float64, shape=[None, dimension], name='x') # 写成矩阵形式会大大加快运算速度 y = tf.placeholder(tf.float64, shape=[None, 1], name='y') # 定义参数估计值和预测值 betaPred = tf.Variable(np.random.random([dimension, 1])) yPred = tf.matmul(x, betaPred, name='y_pred') # 定义损失函数 loss = tf.reduce_mean(tf.square(yPred - y)) model = { 'loss_function': loss, 'independent_variable': x, 'dependent_variable': y, 'prediction': yPred, 'model_params': betaPred } return model
Example #17
Source File: overfeat_test.py From DOTA_models with Apache License 2.0 | 6 votes |
def testTrainEvalWithReuse(self): train_batch_size = 2 eval_batch_size = 1 train_height, train_width = 231, 231 eval_height, eval_width = 281, 281 num_classes = 1000 with self.test_session(): train_inputs = tf.random_uniform( (train_batch_size, train_height, train_width, 3)) logits, _ = overfeat.overfeat(train_inputs) self.assertListEqual(logits.get_shape().as_list(), [train_batch_size, num_classes]) tf.get_variable_scope().reuse_variables() eval_inputs = tf.random_uniform( (eval_batch_size, eval_height, eval_width, 3)) logits, _ = overfeat.overfeat(eval_inputs, is_training=False, spatial_squeeze=False) self.assertListEqual(logits.get_shape().as_list(), [eval_batch_size, 2, 2, num_classes]) logits = tf.reduce_mean(logits, [1, 2]) predictions = tf.argmax(logits, 1) self.assertEquals(predictions.get_shape().as_list(), [eval_batch_size])
Example #18
Source File: alexnet_test.py From DOTA_models with Apache License 2.0 | 6 votes |
def testTrainEvalWithReuse(self): train_batch_size = 2 eval_batch_size = 1 train_height, train_width = 224, 224 eval_height, eval_width = 300, 400 num_classes = 1000 with self.test_session(): train_inputs = tf.random_uniform( (train_batch_size, train_height, train_width, 3)) logits, _ = alexnet.alexnet_v2(train_inputs) self.assertListEqual(logits.get_shape().as_list(), [train_batch_size, num_classes]) tf.get_variable_scope().reuse_variables() eval_inputs = tf.random_uniform( (eval_batch_size, eval_height, eval_width, 3)) logits, _ = alexnet.alexnet_v2(eval_inputs, is_training=False, spatial_squeeze=False) self.assertListEqual(logits.get_shape().as_list(), [eval_batch_size, 4, 7, num_classes]) logits = tf.reduce_mean(logits, [1, 2]) predictions = tf.argmax(logits, 1) self.assertEquals(predictions.get_shape().as_list(), [eval_batch_size])
Example #19
Source File: ops_test.py From DOTA_models with Apache License 2.0 | 5 votes |
def test_position_sensitive_with_equal_channels(self): num_spatial_bins = [2, 2] image_shape = [1, 3, 3, 4] crop_size = [2, 2] image = tf.constant(range(1, 3 * 3 + 1), dtype=tf.float32, shape=[1, 3, 3, 1]) tiled_image = tf.tile(image, [1, 1, 1, image_shape[3]]) boxes = tf.random_uniform((3, 4)) box_ind = tf.constant([0, 0, 0], dtype=tf.int32) # All channels are equal so position-sensitive crop and resize should # work as the usual crop and resize for just one channel. crop = tf.image.crop_and_resize(image, boxes, box_ind, crop_size) crop_and_pool = tf.reduce_mean(crop, [1, 2], keep_dims=True) ps_crop_and_pool = ops.position_sensitive_crop_regions( tiled_image, boxes, box_ind, crop_size, num_spatial_bins, global_pool=True) with self.test_session() as sess: expected_output, output = sess.run((crop_and_pool, ps_crop_and_pool)) self.assertAllClose(output, expected_output)
Example #20
Source File: VariationalAutoencoder.py From DOTA_models with Apache License 2.0 | 5 votes |
def __init__(self, n_input, n_hidden, optimizer = tf.train.AdamOptimizer()): self.n_input = n_input self.n_hidden = n_hidden network_weights = self._initialize_weights() self.weights = network_weights # model self.x = tf.placeholder(tf.float32, [None, self.n_input]) self.z_mean = tf.add(tf.matmul(self.x, self.weights['w1']), self.weights['b1']) self.z_log_sigma_sq = tf.add(tf.matmul(self.x, self.weights['log_sigma_w1']), self.weights['log_sigma_b1']) # sample from gaussian distribution eps = tf.random_normal(tf.stack([tf.shape(self.x)[0], self.n_hidden]), 0, 1, dtype = tf.float32) self.z = tf.add(self.z_mean, tf.multiply(tf.sqrt(tf.exp(self.z_log_sigma_sq)), eps)) self.reconstruction = tf.add(tf.matmul(self.z, self.weights['w2']), self.weights['b2']) # cost reconstr_loss = 0.5 * tf.reduce_sum(tf.pow(tf.subtract(self.reconstruction, self.x), 2.0)) latent_loss = -0.5 * tf.reduce_sum(1 + self.z_log_sigma_sq - tf.square(self.z_mean) - tf.exp(self.z_log_sigma_sq), 1) self.cost = tf.reduce_mean(reconstr_loss + latent_loss) self.optimizer = optimizer.minimize(self.cost) init = tf.global_variables_initializer() self.sess = tf.Session() self.sess.run(init)
Example #21
Source File: cifar10_main.py From DOTA_models with Apache License 2.0 | 5 votes |
def _tower_fn(is_training, weight_decay, feature, label, tower_losses, tower_gradvars, tower_preds, is_cpu): """Build computation tower for each device (CPU or GPU). Args: is_training: true if is for training graph. weight_decay: weight regularization strength, a float. feature: a Tensor. label: a Tensor. tower_losses: a list to be appended with current tower's loss. tower_gradvars: a list to be appended with current tower's gradients. tower_preds: a list to be appended with current tower's predictions. is_cpu: true if build tower on CPU. """ data_format = 'channels_last' if is_cpu else 'channels_first' model = cifar10_model.ResNetCifar10( FLAGS.num_layers, is_training=is_training, data_format=data_format) logits = model.forward_pass(feature, input_data_format='channels_last') tower_pred = { 'classes': tf.argmax(input=logits, axis=1), 'probabilities': tf.nn.softmax(logits) } tower_preds.append(tower_pred) tower_loss = tf.losses.sparse_softmax_cross_entropy( logits=logits, labels=label) tower_loss = tf.reduce_mean(tower_loss) tower_losses.append(tower_loss) model_params = tf.trainable_variables() tower_loss += weight_decay * tf.add_n( [tf.nn.l2_loss(v) for v in model_params]) tower_losses.append(tower_loss) tower_grad = tf.gradients(tower_loss, model_params) tower_gradvars.append(zip(tower_grad, model_params))
Example #22
Source File: layers.py From DOTA_models with Apache License 2.0 | 5 votes |
def _summarize_vars_and_grads(grads_and_vars): tf.logging.info('Trainable variables:') tf.logging.info('-' * 60) for grad, var in grads_and_vars: tf.logging.info(var) def tag(name, v=var): return v.op.name + '_' + name # Variable summary mean = tf.reduce_mean(var) tf.summary.scalar(tag('mean'), mean) with tf.name_scope(tag('stddev')): stddev = tf.sqrt(tf.reduce_mean(tf.square(var - mean))) tf.summary.scalar(tag('stddev'), stddev) tf.summary.scalar(tag('max'), tf.reduce_max(var)) tf.summary.scalar(tag('min'), tf.reduce_min(var)) tf.summary.histogram(tag('histogram'), var) # Gradient summary if grad is not None: if isinstance(grad, tf.IndexedSlices): grad_values = grad.values else: grad_values = grad tf.summary.histogram(tag('gradient'), grad_values) tf.summary.scalar(tag('gradient_norm'), tf.global_norm([grad_values])) else: tf.logging.info('Var %s has no gradient', var.op.name)
Example #23
Source File: losses.py From DOTA_models with Apache License 2.0 | 5 votes |
def difference_loss(private_samples, shared_samples, weight=1.0, name=''): """Adds the difference loss between the private and shared representations. Args: private_samples: a tensor of shape [num_samples, num_features]. shared_samples: a tensor of shape [num_samples, num_features]. weight: the weight of the incoherence loss. name: the name of the tf summary. """ private_samples -= tf.reduce_mean(private_samples, 0) shared_samples -= tf.reduce_mean(shared_samples, 0) private_samples = tf.nn.l2_normalize(private_samples, 1) shared_samples = tf.nn.l2_normalize(shared_samples, 1) correlation_matrix = tf.matmul( private_samples, shared_samples, transpose_a=True) cost = tf.reduce_mean(tf.square(correlation_matrix)) * weight cost = tf.where(cost > 0, cost, 0, name='value') tf.summary.scalar('losses/Difference Loss {}'.format(name), cost) assert_op = tf.Assert(tf.is_finite(cost), [cost]) with tf.control_dependencies([assert_op]): tf.losses.add_loss(cost) ################################################################################ # TASK LOSS ################################################################################
Example #24
Source File: utils.py From DOTA_models with Apache License 2.0 | 5 votes |
def accuracy(predictions, labels): """Calculates the classificaton accuracy. Args: predictions: the predicted values, a tensor whose size matches 'labels'. labels: the ground truth values, a tensor of any size. Returns: a tensor whose value on evaluation returns the total accuracy. """ return tf.reduce_mean(tf.cast(tf.equal(predictions, labels), tf.float32))
Example #25
Source File: actor.py From neural-combinatorial-optimization-rl-tensorflow with MIT License | 5 votes |
def variable_summaries(name,var, with_max_min=False): with tf.name_scope(name): mean = tf.reduce_mean(var) tf.summary.scalar('mean', mean) with tf.name_scope('stddev'): stddev = tf.sqrt(tf.reduce_mean(tf.square(var - mean))) tf.summary.scalar('stddev', stddev) if with_max_min == True: tf.summary.scalar('max', tf.reduce_max(var)) tf.summary.scalar('min', tf.reduce_min(var))
Example #26
Source File: critic.py From neural-combinatorial-optimization-rl-tensorflow with MIT License | 5 votes |
def predict_rewards(self,input_): with tf.variable_scope("encoder"): Encoder = Attentive_encoder(self.config) encoder_output = Encoder.encode(input_) frame = tf.reduce_mean(encoder_output, 1) # [Batch size, Sequence Length, Num_neurons] to [Batch size, Num_neurons] with tf.variable_scope("ffn"): # ffn 1 h0 = tf.layers.dense(frame, self.num_neurons, activation=tf.nn.relu, kernel_initializer=self.initializer) # ffn 2 w1 =tf.get_variable("w1", [self.num_neurons, 1], initializer=self.initializer) b1 = tf.Variable(self.init_baseline, name="b1") self.predictions = tf.squeeze(tf.matmul(h0, w1)+b1)
Example #27
Source File: actor.py From neural-combinatorial-optimization-rl-tensorflow with MIT License | 5 votes |
def build_optim(self): # Update moving_mean and moving_variance for batch normalization layers update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS) with tf.control_dependencies(update_ops): with tf.name_scope('reinforce'): # Actor learning rate self.lr1 = tf.train.exponential_decay(self.lr1_start, self.global_step, self.lr1_decay_step,self.lr1_decay_rate, staircase=False, name="learning_rate1") # Optimizer self.opt1 = tf.train.AdamOptimizer(learning_rate=self.lr1,beta1=0.9,beta2=0.99, epsilon=0.0000001) # Discounted reward self.reward_baseline = tf.stop_gradient(self.reward - self.critic.predictions) # [Batch size, 1] variable_summaries('reward_baseline',self.reward_baseline, with_max_min = True) # Loss self.loss1 = tf.reduce_mean(self.reward_baseline*self.log_softmax,0) tf.summary.scalar('loss1', self.loss1) # Minimize step gvs = self.opt1.compute_gradients(self.loss1) capped_gvs = [(tf.clip_by_norm(grad, 1.), var) for grad, var in gvs if grad is not None] # L2 clip self.train_step1 = self.opt1.apply_gradients(capped_gvs, global_step=self.global_step) with tf.name_scope('state_value'): # Critic learning rate self.lr2 = tf.train.exponential_decay(self.lr2_start, self.global_step2, self.lr2_decay_step,self.lr2_decay_rate, staircase=False, name="learning_rate1") # Optimizer self.opt2 = tf.train.AdamOptimizer(learning_rate=self.lr2,beta1=0.9,beta2=0.99, epsilon=0.0000001) # Loss self.loss2 = tf.losses.mean_squared_error(self.reward, self.critic.predictions, weights = 1.0) tf.summary.scalar('loss2', self.loss1) # Minimize step gvs2 = self.opt2.compute_gradients(self.loss2) capped_gvs2 = [(tf.clip_by_norm(grad, 1.), var) for grad, var in gvs2 if grad is not None] # L2 clip self.train_step2 = self.opt1.apply_gradients(capped_gvs2, global_step=self.global_step2)
Example #28
Source File: actor.py From neural-combinatorial-optimization-rl-tensorflow with MIT License | 5 votes |
def variable_summaries(name,var, with_max_min=False): with tf.name_scope(name): mean = tf.reduce_mean(var) tf.summary.scalar('mean', mean) with tf.name_scope('stddev'): stddev = tf.sqrt(tf.reduce_mean(tf.square(var - mean))) tf.summary.scalar('stddev', stddev) if with_max_min == True: tf.summary.scalar('max', tf.reduce_max(var)) tf.summary.scalar('min', tf.reduce_min(var))
Example #29
Source File: 2_tf_linear.py From deep-learning-note with MIT License | 5 votes |
def gradientDescent(X, Y, model, learningRate=0.01, maxIter=10000, tol=1.e-6): # 确定最优算法 method = tf.train.GradientDescentOptimizer(learning_rate=learningRate) optimizer = method.minimize(model['loss_function']) # 增加日志 tf.summary.scalar('loss_function', model['loss_function']) tf.summary.histogram('params', model['model_params']) tf.summary.scalar('first_param', tf.reduce_mean(model['model_params'][0])) tf.summary.scalar('last_param', tf.reduce_mean(model['model_params'][-1])) summary = tf.summary.merge_all() # 程序运行结束后执行 tensorboard --logdir logs/ summaryWriter = createSummaryWriter('logs/gradient_descent') # TF 开始运行 sess = tf.Session() # 产生初始参数 init = tf.global_variables_initializer() sess.run(init) # 迭代梯度下降 step = 0 prevLoss = np.inf diff = np.inf # 当损失函数的变动小于阈值或达到最大循环次数,则停止迭代 while (step < maxIter) & (diff > tol): _, summaryStr, loss = sess.run( [optimizer, summary, model['loss_function']], feed_dict={ model['independent_variable']: X, model['dependent_variable']: Y } ) summaryWriter.add_summary(summaryStr, step) # 计算损失函数的变动 diff = abs(prevLoss - loss) prevLoss = loss step += 1 summaryWriter.close()
Example #30
Source File: full_episode_objective.py From DOTA_models with Apache License 2.0 | 5 votes |
def get(self, rewards, pads, values, final_values, log_probs, prev_log_probs, target_log_probs, entropies, logits): seq_length = tf.shape(rewards)[0] not_pad = tf.reshape(1 - pads, [seq_length, -1, self.num_samples]) rewards = not_pad * tf.reshape(rewards, [seq_length, -1, self.num_samples]) log_probs = not_pad * tf.reshape(sum(log_probs), [seq_length, -1, self.num_samples]) total_rewards = tf.reduce_sum(rewards, 0) total_log_probs = tf.reduce_sum(log_probs, 0) rewards_and_bonus = (total_rewards + self.bonus_weight * self.get_bonus(total_rewards, total_log_probs)) baseline = tf.reduce_mean(rewards_and_bonus, 1, keep_dims=True) loss = -tf.stop_gradient(rewards_and_bonus - baseline) * total_log_probs loss = tf.reduce_mean(loss) raw_loss = loss # TODO gradient_ops = self.training_ops( loss, learning_rate=self.learning_rate) tf.summary.histogram('log_probs', total_log_probs) tf.summary.histogram('rewards', total_rewards) tf.summary.scalar('avg_rewards', tf.reduce_mean(total_rewards)) tf.summary.scalar('loss', loss) return loss, raw_loss, baseline, gradient_ops, tf.summary.merge_all()