Python tensorflow.keras.backend.reshape() Examples
The following are 30
code examples of tensorflow.keras.backend.reshape().
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.keras.backend
, or try the search function
.
Example #1
Source File: layers.py From neuron with GNU General Public License v3.0 | 6 votes |
def call(self, inputs): """ Parameters inputs: volume of list with one volume """ # check shapes if isinstance(inputs, (list, tuple)): assert len(inputs) == 1, "inputs has to be len 1. found: %d" % len(inputs) vol = inputs[0] else: vol = inputs # necessary for multi_gpu models... vol = K.reshape(vol, [-1, *self.inshape[1:]]) # map transform across batch return tf.map_fn(self._single_resize, vol, dtype=tf.float32)
Example #2
Source File: utils.py From kapre with MIT License | 6 votes |
def call(self, x): n = (self.win_length - 1) / 2.0 denom = n * (n + 1) * (2 * n + 1) / 3 if self.data_format == 'channels_first': x = K.permute_dimensions(x, (0, 2, 3, 1)) x = tf.pad(x, tf.constant([[0, 0], [0, 0], [int(n), int(n)], [0, 0]]), mode=self.mode) kernel = K.arange(-n, n + 1, 1, dtype=K.floatx()) kernel = K.reshape(kernel, (1, kernel.shape[-1], 1, 1)) # (freq, time) x = K.conv2d(x, kernel, 1, data_format='channels_last') / denom if self.data_format == 'channels_first': x = K.permute_dimensions(x, (0, 3, 1, 2)) return x
Example #3
Source File: layers.py From neuron with GNU General Public License v3.0 | 6 votes |
def _single_batch_trf(self, vol): # vol should be vol_shape + [nb_features] # self.trf should be vol_shape + [nb_features] + [ndims] vol_shape = vol.shape.as_list() nb_input_dims = vol_shape[-1] # this is inefficient... new_vols = [None] * self.output_features for j in range(self.output_features): new_vols[j] = tf.zeros(vol_shape[:-1], dtype=tf.float32) for i in range(nb_input_dims): trf_vol = transform(vol[..., i], self.trf[..., i, j, :] * self.trf_mult, interp_method=self.interp_method) trf_vol = tf.reshape(trf_vol, vol_shape[:-1]) new_vols[j] += trf_vol * self.mult[..., i, j] if self.use_bias: new_vols[j] += self.bias[..., j] return tf.stack(new_vols, -1)
Example #4
Source File: layers.py From thundernet-tensorflow2.0 with MIT License | 6 votes |
def channle_shuffle(inputs, group): """Shuffle the channel Args: inputs: 4D Tensor group: int, number of groups Returns: Shuffled 4D Tensor """ #in_shape = inputs.get_shape().as_list() h, w, in_channel = K.int_shape(inputs)[1:] #h, w, in_channel = in_shape[1:] assert(in_channel % group == 0) l = K.reshape(inputs, [-1, h, w, in_channel // group, group]) l = K.permute_dimensions(l, [0, 1, 2, 4, 3]) l = K.reshape(l, [-1, h, w, in_channel]) return l
Example #5
Source File: attn_augconv.py From keras-attention-augmented-convs with MIT License | 6 votes |
def split_heads_2d(self, ip): tensor_shape = K.shape(ip) # batch, height, width, channels for axis = -1 tensor_shape = [tensor_shape[i] for i in range(len(self._shape))] batch = tensor_shape[0] height = tensor_shape[1] width = tensor_shape[2] channels = tensor_shape[3] # Save the spatial tensor dimensions self._batch = batch self._height = height self._width = width ret_shape = K.stack([batch, height, width, self.num_heads, channels // self.num_heads]) split = K.reshape(ip, ret_shape) transpose_axes = (0, 3, 1, 2, 4) split = K.permute_dimensions(split, transpose_axes) return split
Example #6
Source File: custom_activation.py From Echo with MIT License | 6 votes |
def call(self, inputs): def brelu(x): # get shape of X, we are interested in the last axis, which is constant shape = K.int_shape(x) # last axis dim = shape[-1] # half of the last axis (+1 if necessary) dim2 = dim // 2 if dim % 2 != 0: dim2 += 1 # multiplier will be a tensor of alternated +1 and -1 multiplier = K.ones((dim2,)) multiplier = K.stack([multiplier, -multiplier], axis=-1) if dim % 2 != 0: multiplier = multiplier[:-1] # adjust multiplier shape to the shape of x multiplier = K.reshape(multiplier, tuple(1 for _ in shape[:-1]) + (-1,)) return multiplier * tf.nn.relu(multiplier * x) return Lambda(brelu)(inputs)
Example #7
Source File: postprocess.py From keras-YOLOv3-model-set with MIT License | 5 votes |
def yolo2_correct_boxes(box_xy, box_wh, input_shape, image_shape): '''Get corrected boxes''' input_shape = K.cast(input_shape, K.dtype(box_xy)) image_shape = K.cast(image_shape, K.dtype(box_xy)) #reshape the image_shape tensor to align with boxes dimension image_shape = K.reshape(image_shape, [-1, 1, 1, 1, 2]) new_shape = K.round(image_shape * K.min(input_shape/image_shape)) offset = (input_shape-new_shape)/2./input_shape scale = input_shape/new_shape # reverse offset/scale to match (w,h) order offset = offset[..., ::-1] scale = scale[..., ::-1] box_xy = (box_xy - offset) * scale box_wh *= scale box_mins = box_xy - (box_wh / 2.) box_maxes = box_xy + (box_wh / 2.) boxes = K.concatenate([ box_mins[..., 0:1], # x_min box_mins[..., 1:2], # y_min box_maxes[..., 0:1], # x_max box_maxes[..., 1:2] # y_max ]) # Scale boxes back to original image shape. image_wh = image_shape[..., ::-1] boxes *= K.concatenate([image_wh, image_wh]) return boxes
Example #8
Source File: postprocess.py From keras-YOLOv3-model-set with MIT License | 5 votes |
def yolo2_head(feats, anchors, num_classes, input_shape, calc_loss=False): """Convert final layer features to bounding box parameters.""" num_anchors = len(anchors) # Reshape to batch, height, width, num_anchors, box_params. anchors_tensor = K.reshape(K.constant(anchors), [1, 1, 1, num_anchors, 2]) grid_shape = K.shape(feats)[1:3] # height, width grid_y = K.tile(K.reshape(K.arange(0, stop=grid_shape[0]), [-1, 1, 1, 1]), [1, grid_shape[1], 1, 1]) grid_x = K.tile(K.reshape(K.arange(0, stop=grid_shape[1]), [1, -1, 1, 1]), [grid_shape[0], 1, 1, 1]) grid = K.concatenate([grid_x, grid_y]) grid = K.cast(grid, K.dtype(feats)) feats = K.reshape( feats, [-1, grid_shape[0], grid_shape[1], num_anchors, num_classes + 5]) # Adjust preditions to each spatial grid point and anchor size. box_xy = (K.sigmoid(feats[..., :2]) + grid) / K.cast(grid_shape[..., ::-1], K.dtype(feats)) #box_wh = K.exp(feats[..., 2:4]) * anchors_tensor / K.cast(grid_shape[..., ::-1], K.dtype(feats)) box_wh = K.exp(feats[..., 2:4]) * anchors_tensor / K.cast(input_shape[..., ::-1], K.dtype(feats)) box_confidence = K.sigmoid(feats[..., 4:5]) box_class_probs = K.softmax(feats[..., 5:]) if calc_loss == True: return grid, feats, box_xy, box_wh return box_xy, box_wh, box_confidence, box_class_probs
Example #9
Source File: postprocess.py From keras-YOLOv3-model-set with MIT License | 5 votes |
def batched_yolo3_boxes_and_scores(feats, anchors, num_classes, input_shape, image_shape): '''Process Conv layer output''' box_xy, box_wh, box_confidence, box_class_probs = yolo3_head(feats, anchors, num_classes, input_shape) num_anchors = len(anchors) grid_shape = K.shape(feats)[1:3] # height, width total_anchor_num = grid_shape[0] * grid_shape[1] * num_anchors boxes = yolo3_correct_boxes(box_xy, box_wh, input_shape, image_shape) boxes = K.reshape(boxes, [-1, total_anchor_num, 4]) box_scores = box_confidence * box_class_probs box_scores = K.reshape(box_scores, [-1, total_anchor_num, num_classes]) return boxes, box_scores
Example #10
Source File: postprocess.py From keras-YOLOv3-model-set with MIT License | 5 votes |
def yolo3_boxes_and_scores(feats, anchors, num_classes, input_shape, image_shape): '''Process Conv layer output''' box_xy, box_wh, box_confidence, box_class_probs = yolo3_head(feats, anchors, num_classes, input_shape) boxes = yolo3_correct_boxes(box_xy, box_wh, input_shape, image_shape) boxes = K.reshape(boxes, [-1, 4]) box_scores = box_confidence * box_class_probs box_scores = K.reshape(box_scores, [-1, num_classes]) return boxes, box_scores
Example #11
Source File: postprocess.py From keras-YOLOv3-model-set with MIT License | 5 votes |
def yolo3_correct_boxes(box_xy, box_wh, input_shape, image_shape): '''Get corrected boxes''' input_shape = K.cast(input_shape, K.dtype(box_xy)) image_shape = K.cast(image_shape, K.dtype(box_xy)) #reshape the image_shape tensor to align with boxes dimension image_shape = K.reshape(image_shape, [-1, 1, 1, 1, 2]) new_shape = K.round(image_shape * K.min(input_shape/image_shape)) offset = (input_shape-new_shape)/2./input_shape scale = input_shape/new_shape # reverse offset/scale to match (w,h) order offset = offset[..., ::-1] scale = scale[..., ::-1] box_xy = (box_xy - offset) * scale box_wh *= scale box_mins = box_xy - (box_wh / 2.) box_maxes = box_xy + (box_wh / 2.) boxes = K.concatenate([ box_mins[..., 0:1], # x_min box_mins[..., 1:2], # y_min box_maxes[..., 0:1], # x_max box_maxes[..., 1:2] # y_max ]) # Scale boxes back to original image shape. image_wh = image_shape[..., ::-1] boxes *= K.concatenate([image_wh, image_wh]) return boxes
Example #12
Source File: postprocess.py From keras-YOLOv3-model-set with MIT License | 5 votes |
def yolo3_head(feats, anchors, num_classes, input_shape, calc_loss=False): """Convert final layer features to bounding box parameters.""" num_anchors = len(anchors) # Reshape to batch, height, width, num_anchors, box_params. anchors_tensor = K.reshape(K.constant(anchors), [1, 1, 1, num_anchors, 2]) grid_shape = K.shape(feats)[1:3] # height, width grid_y = K.tile(K.reshape(K.arange(0, stop=grid_shape[0]), [-1, 1, 1, 1]), [1, grid_shape[1], 1, 1]) grid_x = K.tile(K.reshape(K.arange(0, stop=grid_shape[1]), [1, -1, 1, 1]), [grid_shape[0], 1, 1, 1]) grid = K.concatenate([grid_x, grid_y]) grid = K.cast(grid, K.dtype(feats)) feats = K.reshape( feats, [-1, grid_shape[0], grid_shape[1], num_anchors, num_classes + 5]) # Adjust preditions to each spatial grid point and anchor size. box_xy = (K.sigmoid(feats[..., :2]) + grid) / K.cast(grid_shape[..., ::-1], K.dtype(feats)) box_wh = K.exp(feats[..., 2:4]) * anchors_tensor / K.cast(input_shape[..., ::-1], K.dtype(feats)) box_confidence = K.sigmoid(feats[..., 4:5]) box_class_probs = K.sigmoid(feats[..., 5:]) if calc_loss == True: return grid, feats, box_xy, box_wh return box_xy, box_wh, box_confidence, box_class_probs
Example #13
Source File: shufflenet.py From keras-YOLOv3-model-set with MIT License | 5 votes |
def channel_shuffle(x, groups): """ Parameters ---------- x: Input tensor of with `channels_last` data format groups: int number of groups per channel Returns ------- channel shuffled output tensor Examples -------- Example for a 1D Array with 3 groups >>> d = np.array([0,1,2,3,4,5,6,7,8]) >>> x = np.reshape(d, (3,3)) >>> x = np.transpose(x, [1,0]) >>> x = np.reshape(x, (9,)) '[0 1 2 3 4 5 6 7 8] --> [0 3 6 1 4 7 2 5 8]' """ height, width, in_channels = x.shape.as_list()[1:] #handle dynamic image shape case if height is None: height = K.shape(x)[1] if width is None: width = K.shape(x)[2] channels_per_group = in_channels // groups x = K.reshape(x, [-1, height, width, groups, channels_per_group]) x = K.permute_dimensions(x, (0, 1, 2, 4, 3)) # transpose x = K.reshape(x, [-1, height, width, in_channels]) return x
Example #14
Source File: decode.py From Centernet-Tensorflow2.0 with Apache License 2.0 | 5 votes |
def _ctdet_decode(hm, reg, wh, k=100, output_stride=4): hm = K.sigmoid(hm) hm = _nms(hm) hm_shape = K.shape(hm) reg_shape = K.shape(reg) wh_shape = K.shape(wh) batch, width, cat = hm_shape[0], hm_shape[2], hm_shape[3] hm_flat = K.reshape(hm, (batch, -1)) reg_flat = K.reshape(reg, (reg_shape[0], -1, reg_shape[-1])) wh_flat = K.reshape(wh, (wh_shape[0], -1, wh_shape[-1])) def _process_sample(args): _hm, _reg, _wh = args _scores, _inds = tf.math.top_k(_hm, k=k, sorted=True) _classes = K.cast(_inds % cat, 'float32') _inds = K.cast(_inds / cat, 'int32') _xs = K.cast(_inds % width, 'float32') _ys = K.cast(K.cast(_inds / width, 'int32'), 'float32') _wh = K.gather(_wh, _inds) _reg = K.gather(_reg, _inds) _xs = _xs + _reg[..., 0] _ys = _ys + _reg[..., 1] _x1 = _xs - _wh[..., 0] / 2 _y1 = _ys - _wh[..., 1] / 2 _x2 = _xs + _wh[..., 0] / 2 _y2 = _ys + _wh[..., 1] / 2 # rescale to image coordinates _x1 = output_stride * _x1 _y1 = output_stride * _y1 _x2 = output_stride * _x2 _y2 = output_stride * _y2 _detection = K.stack([_x1, _y1, _x2, _y2, _scores, _classes], -1) return _detection detections = K.map_fn(_process_sample, [hm_flat, reg_flat, wh_flat], dtype=K.floatx()) return detections
Example #15
Source File: shufflenet_v2.py From keras-YOLOv3-model-set with MIT License | 5 votes |
def channel_shuffle(x): height, width, channels = x.shape.as_list()[1:] #handle dynamic image shape case if height is None: height = K.shape(x)[1] if width is None: width = K.shape(x)[2] channels_per_split = channels // 2 x = K.reshape(x, [-1, height, width, 2, channels_per_split]) x = K.permute_dimensions(x, (0,1,2,4,3)) x = K.reshape(x, [-1, height, width, channels]) return x
Example #16
Source File: backend.py From DeepPoseKit with Apache License 2.0 | 5 votes |
def _find_subpixel_maxima( x, kernel_size, sigma, upsample_factor, coordinate_scale=1.0, confidence_scale=1.0 ): kernel = gaussian_kernel_2d(kernel_size, sigma) kernel = tf.expand_dims(kernel, 0) x_shape = tf.shape(x) rows = x_shape[1] cols = x_shape[2] max_vals = tf.reduce_max(tf.reshape(x, [-1, rows * cols]), axis=1) max_vals = tf.reshape(max_vals, [-1, 1]) / confidence_scale row_pad = rows // 2 - kernel_size // 2 col_pad = cols // 2 - kernel_size // 2 padding = [[0, 0], [row_pad, row_pad - 1], [col_pad, col_pad - 1]] kernel = tf.pad(kernel, padding) row_center = row_pad + (kernel_size // 2) col_center = col_pad + (kernel_size // 2) center = tf.stack([row_center, col_center]) center = tf.expand_dims(center, 0) center = tf.cast(center, dtype=tf.float32) shifts = _upsampled_registration(x, kernel, upsample_factor) shifts = center - shifts shifts *= coordinate_scale maxima = tf.concat([shifts[:, ::-1], max_vals], -1) return maxima
Example #17
Source File: Refinenet.py From TF.Keras-Commonly-used-models with Apache License 2.0 | 5 votes |
def call(self, x, mask=None): input_shape = self.input_spec[0].shape broadcast_shape = [1] * len(input_shape) broadcast_shape[self.axis] = input_shape[self.axis] out = K.reshape(self.gamma, broadcast_shape) * x + K.reshape(self.beta, broadcast_shape) return out
Example #18
Source File: postprocess.py From keras-YOLOv3-model-set with MIT License | 5 votes |
def batched_yolo2_boxes_and_scores(feats, anchors, num_classes, input_shape, image_shape): '''Process Conv layer output''' box_xy, box_wh, box_confidence, box_class_probs = yolo2_head(feats, anchors, num_classes, input_shape) num_anchors = len(anchors) grid_shape = K.shape(feats)[1:3] # height, width total_anchor_num = grid_shape[0] * grid_shape[1] * num_anchors boxes = yolo2_correct_boxes(box_xy, box_wh, input_shape, image_shape) boxes = K.reshape(boxes, [-1, total_anchor_num, 4]) box_scores = box_confidence * box_class_probs box_scores = K.reshape(box_scores, [-1, total_anchor_num, num_classes]) return boxes, box_scores
Example #19
Source File: shapelets.py From tslearn with BSD 2-Clause "Simplified" License | 5 votes |
def transform(self, X): """Generate shapelet transform for a set of time series. Parameters ---------- X : array-like of shape=(n_ts, sz, d) Time series dataset. Returns ------- array of shape=(n_ts, n_shapelets) Shapelet-Transform of the provided time series. """ check_is_fitted(self, '_X_fit_dims') X = check_array(X, allow_nd=True, force_all_finite=False) X = self._preprocess_series(X) X = check_dims(X, X_fit_dims=self._X_fit_dims, check_n_features_only=True) self._check_series_length(X) n_ts, sz, d = X.shape pred = self.transformer_model_.predict( [X[:, :, di].reshape((n_ts, sz, 1)) for di in range(self.d_)], batch_size=self.batch_size, verbose=self.verbose ) return pred
Example #20
Source File: shapelets.py From tslearn with BSD 2-Clause "Simplified" License | 5 votes |
def predict_proba(self, X): """Predict class probability for a given set of time series. Parameters ---------- X : array-like of shape=(n_ts, sz, d) Time series dataset. Returns ------- array of shape=(n_ts, n_classes), Class probability matrix. """ check_is_fitted(self, '_X_fit_dims') X = check_array(X, allow_nd=True, force_all_finite=False) X = self._preprocess_series(X) X = check_dims(X, X_fit_dims=self._X_fit_dims, check_n_features_only=True) self._check_series_length(X) n_ts, sz, d = X.shape categorical_preds = self.model_.predict( [X[:, :, di].reshape((n_ts, sz, 1)) for di in range(self.d_)], batch_size=self.batch_size, verbose=self.verbose ) if categorical_preds.shape[1] == 1 and len(self.classes_) == 2: categorical_preds = numpy.hstack((1 - categorical_preds, categorical_preds)) return categorical_preds
Example #21
Source File: shapelets.py From tslearn with BSD 2-Clause "Simplified" License | 5 votes |
def call(self, x, **kwargs): # (x - y)^2 = x^2 + y^2 - 2 * x * y x_sq = K.expand_dims(K.sum(x ** 2, axis=2), axis=-1) y_sq = K.reshape(K.sum(self.kernel ** 2, axis=1), (1, 1, self.n_shapelets)) xy = K.dot(x, K.transpose(self.kernel)) return (x_sq + y_sq - 2 * xy) / K.int_shape(self.kernel)[1]
Example #22
Source File: layers.py From CartoonGan-tensorflow with Apache License 2.0 | 5 votes |
def channel_shuffle_2(x): dyn_shape = tf.shape(x) h, w = dyn_shape[1], dyn_shape[2] c = x.shape[3] x = K.reshape(x, [-1, h, w, 2, c // 2]) x = K.permute_dimensions(x, [0, 1, 2, 4, 3]) x = K.reshape(x, [-1, h, w, c]) return x
Example #23
Source File: layers.py From neuron with GNU General Public License v3.0 | 5 votes |
def call(self, x): x_orig = x # x reshape this_bs_int = K.shape(x)[0] this_bs = tf.cast(this_bs_int, 'float32') # this batch size prev_count = self.count x = K.batch_flatten(x) # B x N # update mean new_mean, new_count = _mean_update(self.mean, self.count, x, self.cap) # new C update. Should be B x N x N x = K.expand_dims(x, -1) C_delta = K.batch_dot(x, K.permute_dimensions(x, [0, 2, 1])) # update cov prev_cap = K.minimum(prev_count, self.cap) C = self.cov * (prev_cap - 1) + K.sum(C_delta, 0) new_cov = C / (prev_cap + this_bs - 1) # updates updates = [(self.count, new_count), (self.mean, new_mean), (self.cov, new_cov)] self.add_update(updates, x_orig) # prep for broadcasting :( p = tf.concat((K.reshape(this_bs_int, (1,)), K.shape(self.cov)), 0) z = tf.ones(p) return K.minimum(1., new_count/self.cap) * (z * K.expand_dims(new_cov, 0))
Example #24
Source File: layers.py From neuron with GNU General Public License v3.0 | 5 votes |
def call(self, x): # get new mean and count this_bs_int = K.shape(x)[0] new_mean, new_count = _mean_update(self.mean, self.count, x, self.cap) # update op updates = [(self.count, new_count), (self.mean, new_mean)] self.add_update(updates, x) # prep for broadcasting :( p = tf.concat((K.reshape(this_bs_int, (1,)), K.shape(self.mean)), 0) z = tf.ones(p) # the first few 1000 should not matter that much towards this cost return K.minimum(1., new_count/self.cap) * (z * K.expand_dims(new_mean, 0))
Example #25
Source File: layers.py From neuron with GNU General Public License v3.0 | 5 votes |
def build(self, input_shape): # Create a trainable weight variable for this layer. self.kernel = self.add_weight(name='mult-kernel', shape=(np.prod(self.orig_input_shape), self.output_len), initializer=self.kernel_initializer, trainable=True) M = K.reshape(self.kernel, [-1, self.output_len]) # D x d mt = K.transpose(M) # d x D mtm_inv = tf.matrix_inverse(K.dot(mt, M)) # d x d self.W = K.dot(mtm_inv, mt) # d x D if self.use_bias: self.bias = self.add_weight(name='bias-kernel', shape=(self.output_len, ), initializer=self.bias_initializer, trainable=True) # self.sigma_sq = self.add_weight(name='bias-kernel', # shape=(1, ), # initializer=self.initializer, # trainable=True) super(SpatiallySparse_Dense, self).build(input_shape) # Be sure to call this somewhere!
Example #26
Source File: layers.py From neuron with GNU General Public License v3.0 | 5 votes |
def _single_aff_to_shift(self, trf, volshape): if len(trf.shape) == 1: # go from vector to matrix trf = tf.reshape(trf, [self.ndims, self.ndims + 1]) # note this is unnecessarily extra graph since at every batch entry we have a tf.eye graph trf += tf.eye(self.ndims+1)[:self.ndims,:] # add identity, hence affine is a shift from identitiy return affine_to_shift(trf, volshape, shift_center=True)
Example #27
Source File: layers.py From neuron with GNU General Public License v3.0 | 5 votes |
def call(self, inputs): """ Parameters inputs: list with two entries """ # check shapes assert len(inputs) == 2, "inputs has to be len 2, found: %d" % len(inputs) vol = inputs[0] trf = inputs[1] # necessary for multi_gpu models... vol = K.reshape(vol, [-1, *self.inshape[0][1:]]) trf = K.reshape(trf, [-1, *self.inshape[1][1:]]) # go from affine if self.is_affine: trf = tf.map_fn(lambda x: self._single_aff_to_shift(x, vol.shape[1:-1]), trf, dtype=tf.float32) # prepare location shift if self.indexing == 'xy': # shift the first two dimensions trf_split = tf.split(trf, trf.shape[-1], axis=-1) trf_lst = [trf_split[1], trf_split[0], *trf_split[2:]] trf = tf.concat(trf_lst, -1) # map transform across batch if self.single_transform: fn = lambda x: self._single_transform([x, trf[0,:]]) return tf.map_fn(fn, vol, dtype=tf.float32) else: return tf.map_fn(self._single_transform, [vol, trf], dtype=tf.float32)
Example #28
Source File: layers.py From thundernet-tensorflow2.0 with MIT License | 5 votes |
def __init__(self): super(CEM, self).__init__() self.conv4 = Conv2D(CEM_FILTER, 1, strides=1, padding="SAME", use_bias=True) self.conv5 = Conv2D(CEM_FILTER, 1, strides=1, padding="SAME", use_bias=True) #self.b = K.reshape(inputs, [-1, h, w, in_channel // group, group])
Example #29
Source File: layers.py From thundernet-tensorflow2.0 with MIT License | 5 votes |
def call(self, inputs, training=False): C4_lat = self.conv4(inputs[0]) C5_lat = self.conv5(inputs[1]) C5_lat = tf.keras.backend.resize_images(C5_lat, 2, 2, "channels_last", "bilinear") Cglb_lat = K.reshape(inputs[2], [-1, 1, 1, CEM_FILTER]) return C4_lat + C5_lat + Cglb_lat
Example #30
Source File: layers.py From thundernet-tensorflow2.0 with MIT License | 5 votes |
def call(self, inputs, training=False): rpn = self.rpn(inputs, training=training) rpn_conf = self.rpn_cls_score(rpn) #cls_pred = tf.reshape(rpn_cls_score, [tf.shape(rpn_cls_score)[0], -1, 2] rpn_pbbox = self.rpn_cls_pred(rpn) return rpn, rpn_conf, rpn_pbbox