Python tensorflow.compat.v1.stack() Examples
The following are 30
code examples of tensorflow.compat.v1.stack().
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.compat.v1
, or try the search function
.
Example #1
Source File: metrics.py From tensor2tensor with Apache License 2.0 | 6 votes |
def two_class_log_likelihood(predictions, labels, weights_fn=None): """Log-likelihood for two class classification with 0/1 labels. Args: predictions: A float valued tensor of shape [`batch_size`]. Each component should be between 0 and 1. labels: An int valued tensor of shape [`batch_size`]. Each component should either be 0 or 1. weights_fn: unused. Returns: A pair, with the average log likelihood in the first component. """ del weights_fn float_predictions = tf.cast(tf.squeeze(predictions), dtype=tf.float64) batch_probs = tf.stack([1. - float_predictions, float_predictions], axis=-1) int_labels = tf.cast(tf.squeeze(labels), dtype=tf.int32) onehot_targets = tf.cast(tf.one_hot(int_labels, 2), dtype=tf.float64) chosen_probs = tf.einsum( "ij,ij->i", batch_probs, onehot_targets, name="chosen_probs") avg_log_likelihood = tf.reduce_mean(tf.log(chosen_probs)) return avg_log_likelihood, tf.constant(1.0)
Example #2
Source File: simd_mesh_impl.py From mesh with Apache License 2.0 | 6 votes |
def slice(self, tf_tensor, tensor_shape): """"Slice out the corresponding part of tensor given the pnum variable.""" tensor_layout = self.tensor_layout(tensor_shape) if tensor_layout.is_fully_replicated: return self.LaidOutTensor([tf_tensor]) else: slice_shape = self.slice_shape(tensor_shape) slice_begins = [ self.slice_begin(tensor_shape, pnum) for pnum in xrange(self.size) ] slice_begins_tensor = tf.stack(slice_begins) # slice on source device selected_slice_begin = tf.gather(slice_begins_tensor, self.pnum_tensor) return self.LaidOutTensor( [tf.slice(tf_tensor, selected_slice_begin, slice_shape)])
Example #3
Source File: glow_ops.py From tensor2tensor with Apache License 2.0 | 6 votes |
def actnorm_3d(name, x, logscale_factor=3.): """Applies actnorm to each time-step independently. There are a total of 2*n_channels*n_steps parameters learnt. Args: name: variable scope. x: 5-D Tensor, (NTHWC) logscale_factor: Increases the learning rate of the scale by logscale_factor. Returns: x: 5-D Tensor, (NTHWC) with the per-timestep, per-channel normalization. """ with tf.variable_scope(name, reuse=tf.AUTO_REUSE): x = tf.unstack(x, axis=1) x_normed = [] for ind, x_step in enumerate(x): x_step, _ = actnorm("actnorm_%d" % ind, x_step, logscale_factor=logscale_factor) x_normed.append(x_step) return tf.stack(x_normed, axis=1), None
Example #4
Source File: basic_stochastic.py From tensor2tensor with Apache License 2.0 | 6 votes |
def inject_latent(self, layer, inputs, target, action): """Inject a VAE-style latent.""" del action # Latent for stochastic model filters = 128 full_video = tf.stack(inputs + [target], axis=1) latent_mean, latent_std = self.construct_latent_tower( full_video, time_axis=1) latent = common_video.get_gaussian_tensor(latent_mean, latent_std) latent = tfl.flatten(latent) latent = tf.expand_dims(latent, axis=1) latent = tf.expand_dims(latent, axis=1) latent_mask = tfl.dense(latent, filters, name="latent_mask") zeros_mask = tf.zeros( common_layers.shape_list(layer)[:-1] + [filters], dtype=tf.float32) layer = tf.concat([layer, latent_mask + zeros_mask], axis=-1) extra_loss = self.get_kl_loss([latent_mean], [latent_std]) return layer, extra_loss
Example #5
Source File: sv2p.py From tensor2tensor with Apache License 2.0 | 6 votes |
def reward_prediction_mid( self, input_images, input_reward, action, latent, mid_outputs): """Builds a reward prediction network from intermediate layers.""" encoded = [] for i, output in enumerate(mid_outputs): enc = output enc = tfl.conv2d(enc, 64, [3, 3], strides=(1, 1), activation=tf.nn.relu) enc = tfl.conv2d(enc, 32, [3, 3], strides=(2, 2), activation=tf.nn.relu) enc = tfl.conv2d(enc, 16, [3, 3], strides=(2, 2), activation=tf.nn.relu) enc = tfl.flatten(enc) enc = tfl.dense(enc, 64, activation=tf.nn.relu, name="rew_enc_%d" % i) encoded.append(enc) x = encoded x = tf.stack(x, axis=1) x = tfl.flatten(x) x = tfl.dense(x, 256, activation=tf.nn.relu, name="rew_dense1") x = tfl.dense(x, 128, activation=tf.nn.relu, name="rew_dense2") return x
Example #6
Source File: expert_utils.py From tensor2tensor with Apache License 2.0 | 6 votes |
def combine(self, expert_out, multiply_by_gates=True): """Sum together the expert output, multiplied by the corresponding gates. Args: expert_out: a list of `num_experts` `Tensor`s, each with shape `[expert_batch_size_i, <extra_output_dims>]`. multiply_by_gates: a boolean. Returns: a list of num_datashards `Tensor`s with shapes `[batch_size[d], <extra_output_dims>]`. """ expert_part_sizes = tf.unstack( tf.stack([d.part_sizes for d in self._dispatchers]), num=self._ep.n, axis=1) # list of lists of shape [num_experts][num_datashards] expert_output_parts = self._ep(tf.split, expert_out, expert_part_sizes) expert_output_parts_t = transpose_list_of_lists(expert_output_parts) def my_combine(dispatcher, parts): return dispatcher.combine( common_layers.convert_gradient_to_tensor(tf.concat(parts, 0)), multiply_by_gates=multiply_by_gates) return self._dp(my_combine, self._dispatchers, expert_output_parts_t)
Example #7
Source File: common_layers.py From tensor2tensor with Apache License 2.0 | 6 votes |
def argmax_with_score(logits, axis=None): """Argmax along with the value.""" axis = axis or len(logits.get_shape()) - 1 predictions = tf.argmax(logits, axis=axis) logits_shape = shape_list(logits) prefix_shape, vocab_size = logits_shape[:-1], logits_shape[-1] prefix_size = 1 for d in prefix_shape: prefix_size *= d # Flatten to extract scores flat_logits = tf.reshape(logits, [prefix_size, vocab_size]) flat_predictions = tf.reshape(predictions, [prefix_size]) flat_indices = tf.stack( [tf.range(tf.to_int64(prefix_size)), tf.to_int64(flat_predictions)], axis=1) flat_scores = tf.gather_nd(flat_logits, flat_indices) # Unflatten scores = tf.reshape(flat_scores, prefix_shape) return predictions, scores
Example #8
Source File: preprocessing.py From EfficientNet-PyTorch with Apache License 2.0 | 6 votes |
def _decode_and_center_crop(image_bytes, image_size): """Crops to center of image with padding then scales image_size.""" shape = tf.image.extract_jpeg_shape(image_bytes) image_height = shape[0] image_width = shape[1] padded_center_crop_size = tf.cast( ((image_size / (image_size + CROP_PADDING)) * tf.cast(tf.minimum(image_height, image_width), tf.float32)), tf.int32) offset_height = ((image_height - padded_center_crop_size) + 1) // 2 offset_width = ((image_width - padded_center_crop_size) + 1) // 2 crop_window = tf.stack([offset_height, offset_width, padded_center_crop_size, padded_center_crop_size]) image = tf.image.decode_and_crop_jpeg(image_bytes, crop_window, channels=3) image = tf.image.resize_bicubic([image], [image_size, image_size])[0] return image
Example #9
Source File: generator_utils.py From tensor2tensor with Apache License 2.0 | 6 votes |
def _scanning_pack(self, dataset): """Apply scan based pack to a dataset.""" if self._chop_long_sequences: dataset = dataset.map(lambda x: (x[:self._packed_length],)) else: dataset = dataset.filter(lambda *x: tf.reduce_max( # pylint: disable=g-long-lambda tf.stack([tf.shape(i)[0] for i in x]), axis=0) <= self._packed_length) # In order to retrieve the sequences which are still in the queue when the # dataset is exhausted, we feed dummy sequences which are guaranteed to # displace the remaining elements. dataset = dataset.concatenate( tf.data.Dataset.range(self._queue_size).map(self._eviction_fn)) initial_state = self._scan_initial_state() step_fn = functools.partial( tf.autograph.to_graph(_scan_step_fn), packed_length=self._packed_length, queue_size=self._queue_size, spacing=self._spacing, num_sequences=self._num_sequences, token_dtype=self._token_dtype) dataset = dataset.apply(tf.data.experimental.scan(initial_state, step_fn)) is_real_sample = lambda valid_sample, _: valid_sample return dataset.filter(is_real_sample)
Example #10
Source File: bounds.py From interval-bound-propagation with Apache License 2.0 | 6 votes |
def apply_piecewise_monotonic_fn(self, wrapper, fn, boundaries, *args): valid_values = [] for a in [self] + list(args): vs = [] vs.append(a.lower) vs.append(a.upper) for b in boundaries: vs.append( tf.maximum(a.lower, tf.minimum(a.upper, b * tf.ones_like(a.lower)))) valid_values.append(vs) outputs = [] for inputs in itertools.product(*valid_values): outputs.append(fn(*inputs)) outputs = tf.stack(outputs, axis=-1) return IntervalBounds(tf.reduce_min(outputs, axis=-1), tf.reduce_max(outputs, axis=-1))
Example #11
Source File: preprocessors.py From tensor2robot with Apache License 2.0 | 6 votes |
def stack_intra_task_episodes( in_tensors, num_samples_per_task, ): """Stacks together tensors from different episodes of the same task. Args: in_tensors: The input tensors, stored with key names of the form "<name>/i", where i is an int in [0, (num_samples_per_task - 1)]. num_samples_per_task: Number of episodes in the task. Returns: A structure of tensors that matches out_tensor_spec. """ out_tensors = TSpecStructure() # Strip the "/i" postfix from all keys, then get the set of unique keys. key_set = set(['/'.join(key.split('/')[:-1]) for key in in_tensors.keys()]) for key in key_set: data = [] for i in range(num_samples_per_task): data.append(in_tensors['{:s}/{:d}'.format(key, i)]) out_tensors[key] = tf.stack(data, axis=1) return out_tensors
Example #12
Source File: image_transformations.py From tensor2robot with Apache License 2.0 | 6 votes |
def ApplyPhotometricImageDistortionsCheap( images): """Apply photometric distortions to the input images. Args: images: Tensor of shape [batch_size, h, w, 3] containing a batch of images to apply the random photometric distortions to. Assumed to be normalized to range (0, 1), float32 encoding. Returns: images: Tensor of shape [batch_size, h, w, 3] containing a batch of images resulting from applying random photometric distortions to the inputs. """ with tf.name_scope('photometric_distortion'): channels = tf.unstack(images, axis=-1) # Per-channel random gamma correction. # Lower gamma = brighter image, decreased contrast. # Higher gamma = dark image, increased contrast. gamma_corrected = [c**tf.random_uniform([], 0.5, 1.5) for c in channels] images = tf.stack(gamma_corrected, axis=-1) return images
Example #13
Source File: atari_helpers.py From batch_rl with Apache License 2.0 | 6 votes |
def call(self, state): """Creates the output tensor/op given the input state tensor. See https://www.tensorflow.org/api_docs/python/tf/keras/Model for more information on this. Note that tf.keras.Model implements `call` which is wrapped by `__call__` function by tf.keras.Model. Args: state: Tensor, input tensor. Returns: collections.namedtuple, output ops (graph mode) or output tensors (eager). """ unordered_q_networks = [ network(state).q_values for network in self._q_networks] unordered_q_networks = tf.stack(unordered_q_networks, axis=-1) q_networks, q_values = combine_q_functions(unordered_q_networks, self._transform_strategy, **self._kwargs) return MultiNetworkNetworkType(q_networks, unordered_q_networks, q_values)
Example #14
Source File: multi_head_dqn_agent.py From batch_rl with Apache License 2.0 | 6 votes |
def _build_train_op(self): """Builds a training op. Returns: train_op: An op performing one step of training from replay data. """ actions = self._replay.actions indices = tf.stack([tf.range(actions.shape[0]), actions], axis=-1) replay_chosen_q = tf.gather_nd( self._replay_net_outputs.q_heads, indices=indices) target = tf.stop_gradient(self._build_target_q_op()) loss = tf.losses.huber_loss( target, replay_chosen_q, reduction=tf.losses.Reduction.NONE) q_head_losses = tf.reduce_mean(loss, axis=0) final_loss = tf.reduce_mean(q_head_losses) if self.summary_writer is not None: with tf.variable_scope('Losses'): tf.summary.scalar('HuberLoss', final_loss) return self.optimizer.minimize(final_loss)
Example #15
Source File: lstm_models.py From magenta with Apache License 2.0 | 6 votes |
def _merge_decode_results(self, decode_results): """Merge across time.""" assert decode_results time_axis = 1 zipped_results = lstm_utils.LstmDecodeResults(*list(zip(*decode_results))) if zipped_results.rnn_output[0] is None: rnn_output = None rnn_input = None else: rnn_output = tf.concat(zipped_results.rnn_output, axis=time_axis) rnn_input = tf.concat(zipped_results.rnn_input, axis=time_axis) return lstm_utils.LstmDecodeResults( rnn_output=rnn_output, rnn_input=rnn_input, samples=tf.concat(zipped_results.samples, axis=time_axis), final_state=zipped_results.final_state[-1], final_sequence_lengths=tf.stack( zipped_results.final_sequence_lengths, axis=time_axis))
Example #16
Source File: dataloader.py From Object_Detection_Tracking with Apache License 2.0 | 6 votes |
def resize_and_crop_boxes(self): """Resize boxes and crop it to the self._output dimension.""" boxlist = preprocessor.box_list.BoxList(self._boxes) boxes = preprocessor.box_list_scale( boxlist, self._scaled_height, self._scaled_width).get() # Adjust box coordinates based on the offset. box_offset = tf.stack([self._crop_offset_y, self._crop_offset_x, self._crop_offset_y, self._crop_offset_x,]) boxes -= tf.cast(tf.reshape(box_offset, [1, 4]), tf.float32) # Clip the boxes. boxes = self.clip_boxes(boxes) # Filter out ground truth boxes that are all zeros. indices = tf.where(tf.not_equal(tf.reduce_sum(boxes, axis=1), 0)) boxes = tf.gather_nd(boxes, indices) classes = tf.gather_nd(self._classes, indices) return boxes, classes
Example #17
Source File: simd_mesh_impl.py From mesh with Apache License 2.0 | 5 votes |
def allreduce(self, x, mesh_axes, reduction_fn_string): """Grouped allreduce, (summed across the given dimensions). Args: x: a LaidOutTensor mesh_axes: a list of integers reduction_fn_string: "SUM" Returns: a LaidOutTensor Raises: ValueError: if the reduction is not yet implemented. """ if not mesh_axes: return x x = x.to_laid_out_tensor() if reduction_fn_string == "SUM": group_assignment = self._create_group_assignment(mesh_axes) group_size = len(group_assignment[0]) tf_in = x.one_slice dtype = tf_in.dtype if dtype == tf.float32: cast_to_float32 = False elif dtype == tf.bfloat16: cast_to_float32 = ( group_size > self._allreduce_in_bfloat16_max_group_size) else: tf.logging.info("Casting %s to float32 for allreduce" % tf_in.dtype) cast_to_float32 = True if cast_to_float32: tf_in = tf.cast(tf_in, tf.float32) tf_out = tpu_ops.cross_replica_sum(tf_in, group_assignment) if cast_to_float32: tf_out = tf.cast(tf_out, dtype) return self.LaidOutTensor([tf_out]) else: for axis in mesh_axes: x = self.allconcat(x, axis, 0, stack=True) x = self.LaidOutTensor( [mtf.reduction_fn(reduction_fn_string)(x.one_slice, 0)]) return x
Example #18
Source File: models_test.py From privacy with Apache License 2.0 | 5 votes |
def _cat_dataset(n_samples, input_dim, n_classes, batch_size, generator=False): """Creates a categorically encoded dataset. Creates a categorically encoded dataset (y is categorical). returns the specified dataset either as a static array or as a generator. Will have evenly split samples across each output class. Each output class will be a different point in the input space. Args: n_samples: number of rows input_dim: input dimensionality n_classes: output dimensionality batch_size: The desired batch_size generator: False for array, True for generator Returns: X as (n_samples, input_dim), Y as (n_samples, n_outputs) """ x_stack = [] y_stack = [] for i_class in range(n_classes): x_stack.append( tf.constant(1*i_class, tf.float32, (n_samples, input_dim)) ) y_stack.append( tf.constant(i_class, tf.float32, (n_samples, n_classes)) ) x_set, y_set = tf.stack(x_stack), tf.stack(y_stack) if generator: dataset = tf.data.Dataset.from_tensor_slices( (x_set, y_set) ) dataset = dataset.batch(batch_size=batch_size) return dataset return x_set, y_set
Example #19
Source File: inference.py From PINTO_model_zoo with MIT License | 5 votes |
def batch_image_files_decode(image_files): #raw_images = tf.TensorArray(tf.uint8, size=0, dynamic_size=True) raw_images = tf.TensorArray(tf.float32, size=0, dynamic_size=True) for i in tf.range(tf.shape(image_files)[0]): #image = tf.io.decode_image(image_files[i]) image = tf.io.decode_image(image_files[i], dtype=tf.float32) image.set_shape([None, None, None]) raw_images = raw_images.write(i, image) return raw_images.stack() ###############################################################################
Example #20
Source File: multi_network_dqn_agent.py From batch_rl with Apache License 2.0 | 5 votes |
def _build_train_op(self): """Builds a training op. Returns: train_op: An op performing one step of training from replay data. """ actions = self._replay.actions indices = tf.stack([tf.range(actions.shape[0]), actions], axis=-1) replay_chosen_q = tf.gather_nd( self._replay_net_outputs.q_networks, indices=indices) target = tf.stop_gradient(self._build_target_q_op()) loss = tf.losses.huber_loss( target, replay_chosen_q, reduction=tf.losses.Reduction.NONE) q_head_losses = tf.reduce_mean(loss, axis=0) final_loss = tf.reduce_mean(q_head_losses) if self.summary_writer is not None: with tf.variable_scope('Losses'): tf.summary.scalar('HuberLoss', final_loss) self.optimizers = [copy.deepcopy(self.optimizer) for _ in range(self.num_networks)] train_ops = [] for i in range(self.num_networks): var_list = tf.trainable_variables(scope='Online/subnet_{}'.format(i)) train_op = self.optimizers[i].minimize(final_loss, var_list=var_list) train_ops.append(train_op) return tf.group(*train_ops, name='merged_train_op')
Example #21
Source File: decode_utils.py From language with Apache License 2.0 | 5 votes |
def compare_decode_steps(decode_steps_a, decode_steps_b): """Returns tensor of bools indicated whether decode steps are equal.""" return tf.reduce_all( tf.stack([ tf.equal(decode_steps_a.action_types, decode_steps_b.action_types), tf.equal(decode_steps_a.action_ids, decode_steps_b.action_ids), ], axis=0), axis=0)
Example #22
Source File: anchors.py From Object_Detection_Tracking with Apache License 2.0 | 5 votes |
def decode_box_outputs_tf(rel_codes, anchors): """Transforms relative regression coordinates to absolute positions. Network predictions are normalized and relative to a given anchor; this reverses the transformation and outputs absolute coordinates for the input image. Args: rel_codes: box regression targets. anchors: anchors on all feature levels. Returns: outputs: bounding boxes. """ ycenter_a = (anchors[..., 0] + anchors[..., 2]) / 2 xcenter_a = (anchors[..., 1] + anchors[..., 3]) / 2 ha = anchors[..., 2] - anchors[..., 0] wa = anchors[..., 3] - anchors[..., 1] ty, tx, th, tw = tf.unstack(rel_codes, num=4, axis=-1) w = tf.math.exp(tw) * wa h = tf.math.exp(th) * ha ycenter = ty * ha + ycenter_a xcenter = tx * wa + xcenter_a ymin = ycenter - h / 2. xmin = xcenter - w / 2. ymax = ycenter + h / 2. xmax = xcenter + w / 2. return tf.stack([ymin, xmin, ymax, xmax], axis=-1)
Example #23
Source File: anchors.py From Object_Detection_Tracking with Apache License 2.0 | 5 votes |
def nms_tf(dets, thresh): """Non-maximum suppression with tf graph mode.""" x1 = dets[:, 0] y1 = dets[:, 1] x2 = dets[:, 2] y2 = dets[:, 3] scores = dets[:, 4] areas = (x2 - x1 + 1) * (y2 - y1 + 1) order = tf.argsort(scores, direction='DESCENDING') keep = tf.TensorArray(tf.int32, size=0, dynamic_size=True) index = 0 while tf.size(order) > 0: i = order[0] keep = keep.write(index, i) xx1 = tf.maximum(x1[i], tf.gather(x1, order[1:])) yy1 = tf.maximum(y1[i], tf.gather(y1, order[1:])) xx2 = tf.minimum(x2[i], tf.gather(x2, order[1:])) yy2 = tf.minimum(y2[i], tf.gather(y2, order[1:])) w = tf.maximum(0.0, xx2 - xx1 + 1) h = tf.maximum(0.0, yy2 - yy1 + 1) intersection = w * h overlap = intersection / ( areas[i] + tf.gather(areas, order[1:]) - intersection) inds = tf.where_v2(overlap <= thresh) order = tf.concat(tf.gather(order, inds + 1), axis=1) order = tf.squeeze(order, axis=-1) index += 1 return keep.stack()
Example #24
Source File: model_fns.py From language with Apache License 2.0 | 5 votes |
def batch_gather(params, indices): """Gather a batch of indices from a batch of params.""" batch_size = tf.shape(indices)[0] num_idx = tf.shape(indices)[1] brange = tf.cast(tf.range(batch_size), indices.dtype) bindices = tf.tile(tf.expand_dims(brange, 1), (1, num_idx)) gather_indices = tf.stack([bindices, indices], axis=2) return tf.gather_nd(params, gather_indices)
Example #25
Source File: preprocessor.py From Object_Detection_Tracking with Apache License 2.0 | 5 votes |
def _compute_new_dynamic_size(image, min_dimension, max_dimension): """Compute new dynamic shape for resize_to_range method.""" image_shape = tf.shape(image) orig_height = tf.to_float(image_shape[0]) orig_width = tf.to_float(image_shape[1]) num_channels = image_shape[2] orig_min_dim = tf.minimum(orig_height, orig_width) # Calculates the larger of the possible sizes min_dimension = tf.constant(min_dimension, dtype=tf.float32) large_scale_factor = min_dimension / orig_min_dim # Scaling orig_(height|width) by large_scale_factor will make the smaller # dimension equal to min_dimension, save for floating point rounding errors. # For reasonably-sized images, taking the nearest integer will reliably # eliminate this error. large_height = tf.to_int32(tf.round(orig_height * large_scale_factor)) large_width = tf.to_int32(tf.round(orig_width * large_scale_factor)) large_size = tf.stack([large_height, large_width]) if max_dimension: # Calculates the smaller of the possible sizes, use that if the larger # is too big. orig_max_dim = tf.maximum(orig_height, orig_width) max_dimension = tf.constant(max_dimension, dtype=tf.float32) small_scale_factor = max_dimension / orig_max_dim # Scaling orig_(height|width) by small_scale_factor will make the larger # dimension equal to max_dimension, save for floating point rounding # errors. For reasonably-sized images, taking the nearest integer will # reliably eliminate this error. small_height = tf.to_int32(tf.round(orig_height * small_scale_factor)) small_width = tf.to_int32(tf.round(orig_width * small_scale_factor)) small_size = tf.stack([small_height, small_width]) new_size = tf.cond( tf.to_float(tf.reduce_max(large_size)) > max_dimension, lambda: small_size, lambda: large_size) else: new_size = large_size return tf.stack(tf.unstack(new_size) + [num_channels])
Example #26
Source File: tf_example_decoder.py From Object_Detection_Tracking with Apache License 2.0 | 5 votes |
def _decode_boxes(self, parsed_tensors): """Concat box coordinates in the format of [ymin, xmin, ymax, xmax].""" xmin = parsed_tensors['image/object/bbox/xmin'] xmax = parsed_tensors['image/object/bbox/xmax'] ymin = parsed_tensors['image/object/bbox/ymin'] ymax = parsed_tensors['image/object/bbox/ymax'] return tf.stack([ymin, xmin, ymax, xmax], axis=-1)
Example #27
Source File: box_coder.py From Object_Detection_Tracking with Apache License 2.0 | 5 votes |
def batch_decode(encoded_boxes, box_coder, anchors): """Decode a batch of encoded boxes. This op takes a batch of encoded bounding boxes and transforms them to a batch of bounding boxes specified by their corners in the order of [y_min, x_min, y_max, x_max]. Args: encoded_boxes: a float32 tensor of shape [batch_size, num_anchors, code_size] representing the location of the objects. box_coder: a BoxCoder object. anchors: a BoxList of anchors used to encode `encoded_boxes`. Returns: decoded_boxes: a float32 tensor of shape [batch_size, num_anchors, coder_size] representing the corners of the objects in the order of [y_min, x_min, y_max, x_max]. Raises: ValueError: if batch sizes of the inputs are inconsistent, or if the number of anchors inferred from encoded_boxes and anchors are inconsistent. """ encoded_boxes.get_shape().assert_has_rank(3) if encoded_boxes.get_shape()[1].value != anchors.num_boxes_static(): raise ValueError('The number of anchors inferred from encoded_boxes' ' and anchors are inconsistent: shape[1] of encoded_boxes' ' %s should be equal to the number of anchors: %s.' % (encoded_boxes.get_shape()[1].value, anchors.num_boxes_static())) decoded_boxes = tf.stack([ box_coder.decode(boxes, anchors).get() for boxes in tf.unstack(encoded_boxes) ]) return decoded_boxes
Example #28
Source File: matcher.py From Object_Detection_Tracking with Apache License 2.0 | 5 votes |
def gather_based_on_match(self, input_tensor, unmatched_value, ignored_value): """Gathers elements from `input_tensor` based on match results. For columns that are matched to a row, gathered_tensor[col] is set to input_tensor[match_results[col]]. For columns that are unmatched, gathered_tensor[col] is set to unmatched_value. Finally, for columns that are ignored gathered_tensor[col] is set to ignored_value. Note that the input_tensor.shape[1:] must match with unmatched_value.shape and ignored_value.shape Args: input_tensor: Tensor to gather values from. unmatched_value: Constant tensor value for unmatched columns. ignored_value: Constant tensor value for ignored columns. Returns: gathered_tensor: A tensor containing values gathered from input_tensor. The shape of the gathered tensor is [match_results.shape[0]] + input_tensor.shape[1:]. """ input_tensor = tf.concat([tf.stack([ignored_value, unmatched_value]), input_tensor], axis=0) gather_indices = tf.maximum(self.match_results + 2, 0) gathered_tensor = tf.gather(input_tensor, gather_indices) return gathered_tensor
Example #29
Source File: model_fns.py From language with Apache License 2.0 | 5 votes |
def convert_search_to_vector(dist, idx, batch_size, num_nn, vecsize): """Create vector from search indices and distances.""" brange = tf.range(batch_size, dtype=tf.int32) bindices = tf.tile(tf.expand_dims(brange, 1), (1, num_nn)) indices = tf.reshape( tf.stack([bindices, idx], axis=2), (batch_size * num_nn, 2)) values = tf.reshape(dist, (batch_size * num_nn,)) return tf.SparseTensor( indices=tf.cast(indices, dtype=tf.int64), values=values, dense_shape=[batch_size, vecsize])
Example #30
Source File: specification.py From interval-bound-propagation with Apache License 2.0 | 5 votes |
def _build_indices(self, label, indices): batch_size = tf.shape(label)[0] i = tf.range(batch_size, dtype=tf.int32) correct_idx = tf.stack([i, tf.cast(label, tf.int32)], axis=1) wrong_idx = tf.stack([ tf.tile(tf.reshape(i, [batch_size, 1]), [1, self._num_classes - 1]), tf.gather(indices, label), ], axis=2) return correct_idx, wrong_idx