Python tensorflow.expand_dims() Examples
The following are 30
code examples of tensorflow.expand_dims().
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: network_units.py From DOTA_models with Apache License 2.0 | 6 votes |
def pass_through_embedding_matrix(act_block, embedding_matrix, step_idx): """Passes the activations through the embedding_matrix. Takes care to handle out of bounds lookups. Args: act_block: matrix of activations. embedding_matrix: matrix of weights. step_idx: vector containing step indices, with -1 indicating out of bounds. Returns: the embedded activations. """ # Indicator vector for out of bounds lookups. step_idx_mask = tf.expand_dims(tf.equal(step_idx, -1), -1) # Pad the last column of the activation vectors with the indicator. act_block = tf.concat([act_block, tf.to_float(step_idx_mask)], 1) return tf.matmul(act_block, embedding_matrix)
Example #2
Source File: box_list_ops.py From DOTA_models with Apache License 2.0 | 6 votes |
def ioa(boxlist1, boxlist2, scope=None): """Computes pairwise intersection-over-area between box collections. intersection-over-area (IOA) between two boxes box1 and box2 is defined as their intersection area over box2's area. Note that ioa is not symmetric, that is, ioa(box1, box2) != ioa(box2, box1). Args: boxlist1: BoxList holding N boxes boxlist2: BoxList holding M boxes scope: name scope. Returns: a tensor with shape [N, M] representing pairwise ioa scores. """ with tf.name_scope(scope, 'IOA'): intersections = intersection(boxlist1, boxlist2) areas = tf.expand_dims(area(boxlist2), 0) return tf.truediv(intersections, areas)
Example #3
Source File: tpu_model.py From cwavegan with MIT License | 6 votes |
def conv1d_transpose( inputs, filters, kernel_width, stride=4, padding='same', upsample='zeros'): if upsample == 'zeros': return tf.layers.conv2d_transpose( tf.expand_dims(inputs, axis=1), filters, (1, kernel_width), strides=(1, stride), padding='same' )[:, 0] else: raise NotImplementedError
Example #4
Source File: sequence.py From icme2019 with MIT License | 6 votes |
def call(self, x): if (self.size == None) or (self.mode == 'sum'): self.size = int(x.shape[-1]) position_j = 1. / \ K.pow(10000., 2 * K.arange(self.size / 2, dtype='float32') / self.size) position_j = K.expand_dims(position_j, 0) position_i = tf.cumsum(K.ones_like(x[:, :, 0]), 1) - 1 position_i = K.expand_dims(position_i, 2) position_ij = K.dot(position_i, position_j) outputs = K.concatenate( [K.cos(position_ij), K.sin(position_ij)], 2) if self.mode == 'sum': if self.scale: outputs = outputs * outputs ** 0.5 return x + outputs elif self.mode == 'concat': return K.concatenate([outputs, x], 2)
Example #5
Source File: neural_gpu.py From DOTA_models with Apache License 2.0 | 6 votes |
def memory_run(step, nmaps, mem_size, batch_size, vocab_size, global_step, do_training, update_mem, decay_factor, num_gpus, target_emb_weights, output_w, gpu_targets_tn, it): """Run memory.""" q = step[:, 0, it, :] mlabels = gpu_targets_tn[:, it, 0] res, mask, mem_loss = memory_call( q, mlabels, nmaps, mem_size, vocab_size, num_gpus, update_mem) res = tf.gather(target_emb_weights, res) * tf.expand_dims(mask[:, 0], 1) # Mix gold and original in the first steps, 20% later. gold = tf.nn.dropout(tf.gather(target_emb_weights, mlabels), 0.7) use_gold = 1.0 - tf.cast(global_step, tf.float32) / (1000. * decay_factor) use_gold = tf.maximum(use_gold, 0.2) * do_training mem = tf.cond(tf.less(tf.random_uniform([]), use_gold), lambda: use_gold * gold + (1.0 - use_gold) * res, lambda: res) mem = tf.reshape(mem, [-1, 1, 1, nmaps]) return mem, mem_loss, update_mem
Example #6
Source File: utils.py From neural-fingerprinting with BSD 3-Clause "New" or "Revised" License | 6 votes |
def preprocess_batch(images_batch, preproc_func=None): """ Creates a preprocessing graph for a batch given a function that processes a single image. :param images_batch: A tensor for an image batch. :param preproc_func: (optional function) A function that takes in a tensor and returns a preprocessed input. """ if preproc_func is None: return images_batch with tf.variable_scope('preprocess'): images_list = tf.split(images_batch, int(images_batch.shape[0])) result_list = [] for img in images_list: reshaped_img = tf.reshape(img, img.shape[1:]) processed_img = preproc_func(reshaped_img) result_list.append(tf.expand_dims(processed_img, axis=0)) result_images = tf.concat(result_list, axis=0) return result_images
Example #7
Source File: box_list_ops.py From DOTA_models with Apache License 2.0 | 6 votes |
def iou(boxlist1, boxlist2, scope=None): """Computes pairwise intersection-over-union between box collections. Args: boxlist1: BoxList holding N boxes boxlist2: BoxList holding M boxes scope: name scope. Returns: a tensor with shape [N, M] representing pairwise iou scores. """ with tf.name_scope(scope, 'IOU'): intersections = intersection(boxlist1, boxlist2) areas1 = area(boxlist1) areas2 = area(boxlist2) unions = ( tf.expand_dims(areas1, 1) + tf.expand_dims(areas2, 0) - intersections) return tf.where( tf.equal(intersections, 0.0), tf.zeros_like(intersections), tf.truediv(intersections, unions))
Example #8
Source File: 16_basic_kernels.py From deep-learning-note with MIT License | 6 votes |
def main(): rgb = False if rgb: kernels_list = [kernels.BLUR_FILTER_RGB, kernels.SHARPEN_FILTER_RGB, kernels.EDGE_FILTER_RGB, kernels.TOP_SOBEL_RGB, kernels.EMBOSS_FILTER_RGB] else: kernels_list = [kernels.BLUR_FILTER, kernels.SHARPEN_FILTER, kernels.EDGE_FILTER, kernels.TOP_SOBEL, kernels.EMBOSS_FILTER] kernels_list = kernels_list[1:] image = read_one_image('data/images/naruto.jpeg') if not rgb: image = tf.image.rgb_to_grayscale(image) image = tf.expand_dims(image, 0) # make it into a batch of 1 element images = convolve(image, kernels_list, rgb) with tf.Session() as sess: images = sess.run(images) # convert images from tensors to float values show_images(images, rgb)
Example #9
Source File: keypoint_box_coder.py From DOTA_models with Apache License 2.0 | 6 votes |
def __init__(self, num_keypoints, scale_factors=None): """Constructor for KeypointBoxCoder. Args: num_keypoints: Number of keypoints to encode/decode. scale_factors: List of 4 positive scalars to scale ty, tx, th and tw. In addition to scaling ty and tx, the first 2 scalars are used to scale the y and x coordinates of the keypoints as well. If set to None, does not perform scaling. """ self._num_keypoints = num_keypoints if scale_factors: assert len(scale_factors) == 4 for scalar in scale_factors: assert scalar > 0 self._scale_factors = scale_factors self._keypoint_scale_factors = None if scale_factors is not None: self._keypoint_scale_factors = tf.expand_dims(tf.tile( [tf.to_float(scale_factors[0]), tf.to_float(scale_factors[1])], [num_keypoints]), 1)
Example #10
Source File: vgg_preprocessing.py From DOTA_models with Apache License 2.0 | 6 votes |
def _aspect_preserving_resize(image, smallest_side): """Resize images preserving the original aspect ratio. Args: image: A 3-D image `Tensor`. smallest_side: A python integer or scalar `Tensor` indicating the size of the smallest side after resize. Returns: resized_image: A 3-D tensor containing the resized image. """ smallest_side = tf.convert_to_tensor(smallest_side, dtype=tf.int32) shape = tf.shape(image) height = shape[0] width = shape[1] new_height, new_width = _smallest_size_at_least(height, width, smallest_side) image = tf.expand_dims(image, 0) resized_image = tf.image.resize_bilinear(image, [new_height, new_width], align_corners=False) resized_image = tf.squeeze(resized_image) resized_image.set_shape([None, None, 3]) return resized_image
Example #11
Source File: cifarnet_preprocessing.py From DOTA_models with Apache License 2.0 | 6 votes |
def preprocess_for_eval(image, output_height, output_width): """Preprocesses the given image for evaluation. Args: image: A `Tensor` representing an image of arbitrary size. output_height: The height of the image after preprocessing. output_width: The width of the image after preprocessing. Returns: A preprocessed image. """ tf.summary.image('image', tf.expand_dims(image, 0)) # Transform the image to floats. image = tf.to_float(image) # Resize and crop if needed. resized_image = tf.image.resize_image_with_crop_or_pad(image, output_width, output_height) tf.summary.image('resized_image', tf.expand_dims(resized_image, 0)) # Subtract off the mean and divide by the variance of the pixels. return tf.image.per_image_standardization(resized_image)
Example #12
Source File: shape_utils.py From DOTA_models with Apache License 2.0 | 6 votes |
def pad_tensor(t, length): """Pads the input tensor with 0s along the first dimension up to the length. Args: t: the input tensor, assuming the rank is at least 1. length: a tensor of shape [1] or an integer, indicating the first dimension of the input tensor t after padding, assuming length <= t.shape[0]. Returns: padded_t: the padded tensor, whose first dimension is length. If the length is an integer, the first dimension of padded_t is set to length statically. """ t_rank = tf.rank(t) t_shape = tf.shape(t) t_d0 = t_shape[0] pad_d0 = tf.expand_dims(length - t_d0, 0) pad_shape = tf.cond( tf.greater(t_rank, 1), lambda: tf.concat([pad_d0, t_shape[1:]], 0), lambda: tf.expand_dims(length - t_d0, 0)) padded_t = tf.concat([t, tf.zeros(pad_shape, dtype=t.dtype)], 0) if not _is_tensor(length): padded_t = _set_dim_0(padded_t, length) return padded_t
Example #13
Source File: ops.py From DOTA_models with Apache License 2.0 | 6 votes |
def expanded_shape(orig_shape, start_dim, num_dims): """Inserts multiple ones into a shape vector. Inserts an all-1 vector of length num_dims at position start_dim into a shape. Can be combined with tf.reshape to generalize tf.expand_dims. Args: orig_shape: the shape into which the all-1 vector is added (int32 vector) start_dim: insertion position (int scalar) num_dims: length of the inserted all-1 vector (int scalar) Returns: An int32 vector of length tf.size(orig_shape) + num_dims. """ with tf.name_scope('ExpandedShape'): start_dim = tf.expand_dims(start_dim, 0) # scalar to rank-1 before = tf.slice(orig_shape, [0], start_dim) add_shape = tf.ones(tf.reshape(num_dims, [1]), dtype=tf.int32) after = tf.slice(orig_shape, start_dim, [-1]) new_shape = tf.concat([before, add_shape, after], 0) return new_shape
Example #14
Source File: image_processing.py From DOTA_models with Apache License 2.0 | 6 votes |
def eval_image(image, height, width, scope=None): """Prepare one image for evaluation. Args: image: 3-D float Tensor height: integer width: integer scope: Optional scope for name_scope. Returns: 3-D float Tensor of prepared image. """ with tf.name_scope(values=[image, height, width], name=scope, default_name='eval_image'): # Crop the central region of the image with an area containing 87.5% of # the original image. image = tf.image.central_crop(image, central_fraction=0.875) # Resize the image to the original height and width. image = tf.expand_dims(image, 0) image = tf.image.resize_bilinear(image, [height, width], align_corners=False) image = tf.squeeze(image, [0]) return image
Example #15
Source File: ops.py From DOTA_models with Apache License 2.0 | 6 votes |
def one_hot_encoding(labels, num_classes, scope=None): """Transform numeric labels into onehot_labels. Args: labels: [batch_size] target labels. num_classes: total number of classes. scope: Optional scope for name_scope. Returns: one hot encoding of the labels. """ with tf.name_scope(scope, 'OneHotEncoding', [labels]): batch_size = labels.get_shape()[0] indices = tf.expand_dims(tf.range(0, batch_size), 1) labels = tf.cast(tf.expand_dims(labels, 1), indices.dtype) concated = tf.concat(axis=1, values=[indices, labels]) onehot_labels = tf.sparse_to_dense( concated, tf.stack([batch_size, num_classes]), 1.0, 0.0) onehot_labels.set_shape([batch_size, num_classes]) return onehot_labels
Example #16
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 #17
Source File: model.py From DOTA_models with Apache License 2.0 | 6 votes |
def compute_first_or_last(self, select, first=True): #perform first ot last operation on row select with probabilistic row selection answer = tf.zeros_like(select) running_sum = tf.zeros([self.batch_size, 1], self.data_type) for i in range(self.max_elements): if (first): current = tf.slice(select, [0, i], [self.batch_size, 1]) else: current = tf.slice(select, [0, self.max_elements - 1 - i], [self.batch_size, 1]) curr_prob = current * (1 - running_sum) curr_prob = curr_prob * tf.cast(curr_prob >= 0.0, self.data_type) running_sum += curr_prob temp_ans = [] curr_prob = tf.expand_dims(tf.reshape(curr_prob, [self.batch_size]), 0) for i_ans in range(self.max_elements): if (not (first) and i_ans == self.max_elements - 1 - i): temp_ans.append(curr_prob) elif (first and i_ans == i): temp_ans.append(curr_prob) else: temp_ans.append(tf.zeros_like(curr_prob)) temp_ans = tf.transpose(tf.concat(axis=0, values=temp_ans)) answer += temp_ans return answer
Example #18
Source File: faster_rcnn_meta_arch.py From DOTA_models with Apache License 2.0 | 6 votes |
def _batch_decode_refined_boxes(self, refined_box_encodings, proposal_boxes): """Decode tensor of refined box encodings. Args: refined_box_encodings: a 3-D tensor with shape [batch_size, max_num_proposals, num_classes, self._box_coder.code_size] representing predicted (final) refined box encodings. proposal_boxes: [batch_size, self.max_num_proposals, 4] representing decoded proposal bounding boxes. Returns: refined_box_predictions: a [batch_size, max_num_proposals, num_classes, 4] float tensor representing (padded) refined bounding box predictions (for each image in batch, proposal and class). """ tiled_proposal_boxes = tf.tile( tf.expand_dims(proposal_boxes, 2), [1, 1, self.num_classes, 1]) tiled_proposals_boxlist = box_list.BoxList( tf.reshape(tiled_proposal_boxes, [-1, 4])) decoded_boxes = self._box_coder.decode( tf.reshape(refined_box_encodings, [-1, self._box_coder.code_size]), tiled_proposals_boxlist) return tf.reshape(decoded_boxes.get(), [-1, self.max_num_proposals, self.num_classes, 4])
Example #19
Source File: faster_rcnn_meta_arch.py From DOTA_models with Apache License 2.0 | 6 votes |
def _padded_batched_proposals_indicator(self, num_proposals, max_num_proposals): """Creates indicator matrix of non-pad elements of padded batch proposals. Args: num_proposals: Tensor of type tf.int32 with shape [batch_size]. max_num_proposals: Maximum number of proposals per image (integer). Returns: A Tensor of type tf.bool with shape [batch_size, max_num_proposals]. """ batch_size = tf.size(num_proposals) tiled_num_proposals = tf.tile( tf.expand_dims(num_proposals, 1), [1, max_num_proposals]) tiled_proposal_index = tf.tile( tf.expand_dims(tf.range(max_num_proposals), 0), [batch_size, 1]) return tf.greater(tiled_num_proposals, tiled_proposal_index)
Example #20
Source File: bulk_component.py From DOTA_models with Apache License 2.0 | 5 votes |
def extract_fixed_feature_ids(comp, state, stride): """Extracts fixed feature IDs. Args: comp: Component whose fixed feature IDs we wish to extract. state: Live MasterState object for the component. stride: Tensor containing current batch * beam size. Returns: state handle: Updated state handle to be used after this call. ids: List of [stride * num_steps, 1] feature IDs per channel. Missing IDs (e.g., due to batch padding) are set to -1. """ num_channels = len(comp.spec.fixed_feature) if not num_channels: return state.handle, [] for feature_spec in comp.spec.fixed_feature: check.Eq(feature_spec.size, 1, 'All features must have size=1') check.Lt(feature_spec.embedding_dim, 0, 'All features must be non-embedded') state.handle, indices, ids, _, num_steps = dragnn_ops.bulk_fixed_features( state.handle, component=comp.name, num_channels=num_channels) size = stride * num_steps fixed_ids = [] for channel, feature_spec in enumerate(comp.spec.fixed_feature): tf.logging.info('[%s] Adding fixed feature IDs "%s"', comp.name, feature_spec.name) # The +1 and -1 increments ensure that missing IDs default to -1. # # TODO(googleuser): This formula breaks if multiple IDs are extracted at some # step. Try using tf.unique() to enforce the unique-IDS precondition. sums = tf.unsorted_segment_sum(ids[channel] + 1, indices[channel], size) - 1 sums = tf.expand_dims(sums, axis=1) fixed_ids.append(network_units.NamedTensor(sums, feature_spec.name, dim=1)) return state.handle, fixed_ids
Example #21
Source File: network_units.py From DOTA_models with Apache License 2.0 | 5 votes |
def create(self, fixed_embeddings, linked_embeddings, context_tensor_arrays, attention_tensor, during_training, stride=None): """Requires |stride|; otherwise see base class.""" # TODO(googleuser): Normalize the arguments to create(). 'stride' # is unused by the recurrent network units, while 'context_tensor_arrays' # and 'attenion_tensor_array' is unused by bulk network units. b/33587044 if stride is None: raise ValueError("PairwiseConvNetwork needs 'stride'") input_tensor = get_input_tensor_with_stride(fixed_embeddings, linked_embeddings, stride) # TODO(googleuser): Add dropout. del context_tensor_arrays, attention_tensor, during_training # Unused. num_steps = tf.shape(input_tensor)[1] arg1 = tf.expand_dims(input_tensor, 1) arg1 = tf.tile(arg1, tf.stack([1, num_steps, 1, 1])) arg2 = tf.expand_dims(input_tensor, 2) arg2 = tf.tile(arg2, tf.stack([1, 1, num_steps, 1])) conv = tf.concat([arg1, arg2], 3) for i in xrange(self._num_layers): with tf.variable_scope('conv%d' % i, reuse=True) as scope: conv = tf.nn.conv2d( conv, self._component.get_variable('weights'), [1, 1, 1, 1], padding='SAME') conv = tf.nn.bias_add(conv, self._component.get_variable('biases')) if i in self._relu_layers: conv = tf.nn.relu(conv, name=scope.name) return [tf.reshape(conv, [-1, num_steps], name='reshape_activations')]
Example #22
Source File: trainer.py From DOTA_models with Apache License 2.0 | 5 votes |
def _create_input_queue(batch_size_per_clone, create_tensor_dict_fn, batch_queue_capacity, num_batch_queue_threads, prefetch_queue_capacity, data_augmentation_options): """Sets up reader, prefetcher and returns input queue. Args: batch_size_per_clone: batch size to use per clone. create_tensor_dict_fn: function to create tensor dictionary. batch_queue_capacity: maximum number of elements to store within a queue. num_batch_queue_threads: number of threads to use for batching. prefetch_queue_capacity: maximum capacity of the queue used to prefetch assembled batches. data_augmentation_options: a list of tuples, where each tuple contains a data augmentation function and a dictionary containing arguments and their values (see preprocessor.py). Returns: input queue: a batcher.BatchQueue object holding enqueued tensor_dicts (which hold images, boxes and targets). To get a batch of tensor_dicts, call input_queue.Dequeue(). """ tensor_dict = create_tensor_dict_fn() tensor_dict[fields.InputDataFields.image] = tf.expand_dims( tensor_dict[fields.InputDataFields.image], 0) images = tensor_dict[fields.InputDataFields.image] float_images = tf.to_float(images) tensor_dict[fields.InputDataFields.image] = float_images if data_augmentation_options: tensor_dict = preprocessor.preprocess(tensor_dict, data_augmentation_options) input_queue = batcher.BatchQueue( tensor_dict, batch_size=batch_size_per_clone, batch_queue_capacity=batch_queue_capacity, num_batch_queue_threads=num_batch_queue_threads, prefetch_queue_capacity=prefetch_queue_capacity) return input_queue
Example #23
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 #24
Source File: model.py From DOTA_models with Apache License 2.0 | 5 votes |
def _CrossConvHelper(self, encoded_image, kernel): """Cross Convolution. The encoded image and kernel are of the same shape. Namely [batch_size, image_size, image_size, channels]. They are split into [image_size, image_size] image squares [kernel_size, kernel_size] kernel squares. kernel squares are used to convolute image squares. """ images = tf.expand_dims(encoded_image, 0) kernels = tf.expand_dims(kernel, 3) return tf.nn.depthwise_conv2d(images, kernels, [1, 1, 1, 1], 'SAME')
Example #25
Source File: network_units.py From DOTA_models with Apache License 2.0 | 5 votes |
def create(self, fixed_embeddings, linked_embeddings, context_tensor_arrays, attention_tensor, during_training, stride=None): """Requires |stride|; otherwise see base class.""" if stride is None: raise RuntimeError("ConvNetwork needs 'stride' and must be called in the " "bulk feature extractor component.") input_tensor = get_input_tensor_with_stride(fixed_embeddings, linked_embeddings, stride) # TODO(googleuser): Add context and attention. del context_tensor_arrays, attention_tensor # On CPU, add a dimension so that the 'image' has shape # [stride, 1, num_steps, D]. conv = tf.expand_dims(input_tensor, 1) for i in range(len(self._depths) - 1): with tf.variable_scope('conv%d' % i, reuse=True) as scope: if during_training: conv.set_shape([None, 1, None, self._depths[i]]) conv = self._maybe_apply_dropout(conv, stride) conv = tf.nn.conv2d( conv, self._component.get_variable('weights'), [1, 1, 1, 1], padding='SAME') conv = tf.nn.bias_add(conv, self._component.get_variable('biases')) if i < (len(self._weights) - 1) or not self._output_dim: conv = self._nonlinearity(conv, name=scope.name) return [ tf.reshape( conv, [-1, self._depths[-1]], name='reshape_activations') ]
Example #26
Source File: neural_gpu.py From DOTA_models with Apache License 2.0 | 5 votes |
def reorder_beam(beam_size, batch_size, beam_val, output, is_first, tensors_to_reorder): """Reorder to minimize beam costs.""" # beam_val is [batch_size x beam_size]; let b = batch_size * beam_size # decided is len x b x a x b # output is b x out_size; step is b x len x a x b; outputs = tf.split(axis=0, num_or_size_splits=beam_size, value=tf.nn.log_softmax(output)) all_beam_vals, all_beam_idx = [], [] beam_range = 1 if is_first else beam_size for i in xrange(beam_range): top_out, top_out_idx = tf.nn.top_k(outputs[i], k=beam_size) cur_beam_val = beam_val[:, i] top_out = tf.Print(top_out, [top_out, top_out_idx, beam_val, i, cur_beam_val], "GREPO", summarize=8) all_beam_vals.append(top_out + tf.expand_dims(cur_beam_val, 1)) all_beam_idx.append(top_out_idx) all_beam_idx = tf.reshape(tf.transpose(tf.concat(axis=1, values=all_beam_idx), [1, 0]), [-1]) top_beam, top_beam_idx = tf.nn.top_k(tf.concat(axis=1, values=all_beam_vals), k=beam_size) top_beam_idx = tf.Print(top_beam_idx, [top_beam, top_beam_idx], "GREP", summarize=8) reordered = [[] for _ in xrange(len(tensors_to_reorder) + 1)] top_out_idx = [] for i in xrange(beam_size): which_idx = top_beam_idx[:, i] * batch_size + tf.range(batch_size) top_out_idx.append(tf.gather(all_beam_idx, which_idx)) which_beam = top_beam_idx[:, i] / beam_size # [batch] which_beam = which_beam * batch_size + tf.range(batch_size) reordered[0].append(tf.gather(output, which_beam)) for i, t in enumerate(tensors_to_reorder): reordered[i + 1].append(tf.gather(t, which_beam)) new_tensors = [tf.concat(axis=0, values=t) for t in reordered] top_out_idx = tf.concat(axis=0, values=top_out_idx) return (top_beam, new_tensors[0], top_out_idx, new_tensors[1:])
Example #27
Source File: losses.py From DOTA_models with Apache License 2.0 | 5 votes |
def _compute_loss(self, prediction_tensor, target_tensor, weights): """Compute loss function. Args: prediction_tensor: A float tensor of shape [batch_size, num_anchors, num_classes] representing the predicted logits for each class target_tensor: A float tensor of shape [batch_size, num_anchors, num_classes] representing one-hot encoded classification targets weights: a float tensor of shape [batch_size, num_anchors] Returns: loss: a (scalar) tensor representing the value of the loss function or a float tensor of shape [batch_size, num_anchors] """ if self._bootstrap_type == 'soft': bootstrap_target_tensor = self._alpha * target_tensor + ( 1.0 - self._alpha) * tf.sigmoid(prediction_tensor) else: bootstrap_target_tensor = self._alpha * target_tensor + ( 1.0 - self._alpha) * tf.cast( tf.sigmoid(prediction_tensor) > 0.5, tf.float32) per_entry_cross_ent = (tf.nn.sigmoid_cross_entropy_with_logits( labels=bootstrap_target_tensor, logits=prediction_tensor)) if self._anchorwise_output: return tf.reduce_sum(per_entry_cross_ent * tf.expand_dims(weights, 2), 2) return tf.reduce_sum(per_entry_cross_ent * tf.expand_dims(weights, 2))
Example #28
Source File: preprocessor_test.py From DOTA_models with Apache License 2.0 | 5 votes |
def expectedMinImageAfterColorScale(self): images_r = tf.constant([[[-0.1, -0.1, -0.1, -0.1], [-1, -1, -0.1, -0.1], [-1, -0.1, -0.1, -0.1], [0.4, 0.4, -0.1, -0.1]]], dtype=tf.float32) images_r = tf.expand_dims(images_r, 3) images_g = tf.constant([[[-1, -1, -0.1, -0.1], [-1, -1, -0.1, -0.1], [-1, -0.1, 0.4, 0.4], [0.4, 0.4, -0.1, 0.4]]], dtype=tf.float32) images_g = tf.expand_dims(images_g, 3) images_b = tf.constant([[[-0.1, -0.1, 0.4, -1], [-1, -1, -0.1, 0.4], [-1, -0.1, -0.1, -1], [0.4, 0.4, 0.4, -0.1]]], dtype=tf.float32) images_b = tf.expand_dims(images_b, 3) images = tf.concat([images_r, images_g, images_b], 3) return images
Example #29
Source File: inception_train.py From DOTA_models with Apache License 2.0 | 5 votes |
def _average_gradients(tower_grads): """Calculate the average gradient for each shared variable across all towers. Note that this function provides a synchronization point across all towers. Args: tower_grads: List of lists of (gradient, variable) tuples. The outer list is over individual gradients. The inner list is over the gradient calculation for each tower. Returns: List of pairs of (gradient, variable) where the gradient has been averaged across all towers. """ average_grads = [] for grad_and_vars in zip(*tower_grads): # Note that each grad_and_vars looks like the following: # ((grad0_gpu0, var0_gpu0), ... , (grad0_gpuN, var0_gpuN)) grads = [] for g, _ in grad_and_vars: # Add 0 dimension to the gradients to represent the tower. expanded_g = tf.expand_dims(g, 0) # Append on a 'tower' dimension which we will average over below. grads.append(expanded_g) # Average over the 'tower' dimension. grad = tf.concat(axis=0, values=grads) grad = tf.reduce_mean(grad, 0) # Keep in mind that the Variables are redundant because they are shared # across towers. So .. we will just return the first tower's pointer to # the Variable. v = grad_and_vars[0][1] grad_and_var = (grad, v) average_grads.append(grad_and_var) return average_grads
Example #30
Source File: structured_graph_builder.py From DOTA_models with Apache License 2.0 | 5 votes |
def AddCrossEntropy(batch_size, n): """Adds a cross entropy cost function.""" cross_entropies = [] def _Pass(): return tf.constant(0, dtype=tf.float32, shape=[1]) for beam_id in range(batch_size): beam_gold_slot = tf.reshape( tf.strided_slice(n['gold_slot'], [beam_id], [beam_id + 1]), [1]) def _ComputeCrossEntropy(): """Adds ops to compute cross entropy of the gold path in a beam.""" # Requires a cast so that UnsortedSegmentSum, in the gradient, # is happy with the type of its input 'segment_ids', which # must be int32. idx = tf.cast( tf.reshape( tf.where(tf.equal(n['beam_ids'], beam_id)), [-1]), tf.int32) beam_scores = tf.reshape(tf.gather(n['all_path_scores'], idx), [1, -1]) num = tf.shape(idx) return tf.nn.softmax_cross_entropy_with_logits( labels=tf.expand_dims( tf.sparse_to_dense(beam_gold_slot, num, [1.], 0.), 0), logits=beam_scores) # The conditional here is needed to deal with the last few batches of the # corpus which can contain -1 in beam_gold_slot for empty batch slots. cross_entropies.append(cf.cond( beam_gold_slot[0] >= 0, _ComputeCrossEntropy, _Pass)) return {'cross_entropy': tf.div(tf.add_n(cross_entropies), batch_size)}