Python tensorflow.keras.backend.permute_dimensions() Examples
The following are 20
code examples of tensorflow.keras.backend.permute_dimensions().
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: time_frequency.py From kapre with MIT License | 6 votes |
def call(self, x): power_spectrogram = super(Melspectrogram, self).call(x) # now, channels_first: (batch_sample, n_ch, n_freq, n_time) # channels_last: (batch_sample, n_freq, n_time, n_ch) if self.image_data_format == 'channels_first': power_spectrogram = K.permute_dimensions(power_spectrogram, [0, 1, 3, 2]) else: power_spectrogram = K.permute_dimensions(power_spectrogram, [0, 3, 2, 1]) # now, whatever image_data_format, (batch_sample, n_ch, n_time, n_freq) output = K.dot(power_spectrogram, self.freq2mel) if self.image_data_format == 'channels_first': output = K.permute_dimensions(output, [0, 1, 3, 2]) else: output = K.permute_dimensions(output, [0, 3, 2, 1]) if self.power_melgram != 2.0: output = K.pow(K.sqrt(output), self.power_melgram) if self.return_decibel_melgram: output = backend_keras.amplitude_to_decibel(output) return output
Example #2
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 #3
Source File: backend.py From DeepPoseKit with Apache License 2.0 | 6 votes |
def find_maxima(x, coordinate_scale=1, confidence_scale=255.0, data_format=None): """Finds the 2D maxima contained in a 4D tensor. # Arguments x: Tensor or variable. data_format: string, `"channels_last"` or `"channels_first"`. # Returns A tensor. # Raises ValueError: if `data_format` is neither `"channels_last"` or `"channels_first"`. """ if data_format == "channels_first": x = permute_dimensions(x, [0, 2, 3, 1]) x = _find_maxima(x, coordinate_scale, confidence_scale) x = permute_dimensions(x, [0, 2, 1]) return x elif data_format == "channels_last": x = _find_maxima(x, coordinate_scale, confidence_scale) x = permute_dimensions(x, [0, 2, 1]) return x else: raise ValueError("Invalid data_format:", data_format)
Example #4
Source File: layers.py From neuron with GNU General Public License v3.0 | 6 votes |
def call(self, inputx): if not inputx.dtype in [tf.complex64, tf.complex128]: print('Warning: inputx is not complex. Converting.', file=sys.stderr) # if inputx is float, this will assume 0 imag channel inputx = tf.cast(inputx, tf.complex64) # get the right fft if self.ndims == 1: ifft = tf.ifft elif self.ndims == 2: ifft = tf.ifft2d else: ifft = tf.ifft3d perm_dims = [0, self.ndims + 1] + list(range(1, self.ndims + 1)) invert_perm_ndims = [0] + list(range(2, self.ndims + 2)) + [1] perm_inputx = K.permute_dimensions(inputx, perm_dims) # [batch_size, nb_features, *vol_size] ifft_inputx = ifft(perm_inputx) return K.permute_dimensions(ifft_inputx, invert_perm_ndims)
Example #5
Source File: layers.py From neuron with GNU General Public License v3.0 | 6 votes |
def call(self, inputx): if not inputx.dtype in [tf.complex64, tf.complex128]: print('Warning: inputx is not complex. Converting.', file=sys.stderr) # if inputx is float, this will assume 0 imag channel inputx = tf.cast(inputx, tf.complex64) # get the right fft if self.ndims == 1: fft = tf.fft elif self.ndims == 2: fft = tf.fft2d else: fft = tf.fft3d perm_dims = [0, self.ndims + 1] + list(range(1, self.ndims + 1)) invert_perm_ndims = [0] + list(range(2, self.ndims + 2)) + [1] perm_inputx = K.permute_dimensions(inputx, perm_dims) # [batch_size, nb_features, *vol_size] fft_inputx = fft(perm_inputx) return K.permute_dimensions(fft_inputx, invert_perm_ndims)
Example #6
Source File: attn_augconv.py From keras-attention-augmented-convs with MIT License | 6 votes |
def relative_logits(self, q): shape = K.shape(q) # [batch, num_heads, H, W, depth_v] shape = [shape[i] for i in range(5)] height = shape[2] width = shape[3] rel_logits_w = self.relative_logits_1d(q, self.key_relative_w, height, width, transpose_mask=[0, 1, 2, 4, 3, 5]) rel_logits_h = self.relative_logits_1d( K.permute_dimensions(q, [0, 1, 3, 2, 4]), self.key_relative_h, width, height, transpose_mask=[0, 1, 4, 2, 5, 3]) return rel_logits_h, rel_logits_w
Example #7
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 #8
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 #9
Source File: attn_augconv.py From keras-attention-augmented-convs with MIT License | 5 votes |
def relative_logits_1d(self, q, rel_k, H, W, transpose_mask): rel_logits = tf.einsum('bhxyd,md->bhxym', q, rel_k) rel_logits = K.reshape(rel_logits, [-1, self.num_heads * H, W, 2 * W - 1]) rel_logits = self.rel_to_abs(rel_logits) rel_logits = K.reshape(rel_logits, [-1, self.num_heads, H, W, W]) rel_logits = K.expand_dims(rel_logits, axis=3) rel_logits = K.tile(rel_logits, [1, 1, 1, H, 1, 1]) rel_logits = K.permute_dimensions(rel_logits, transpose_mask) rel_logits = K.reshape(rel_logits, [-1, self.num_heads, H * W, H * W]) return rel_logits
Example #10
Source File: attn_augconv.py From keras-attention-augmented-convs with MIT License | 5 votes |
def combine_heads_2d(self, inputs): # [batch, num_heads, height, width, depth_v // num_heads] transposed = K.permute_dimensions(inputs, [0, 2, 3, 1, 4]) # [batch, height, width, num_heads, depth_v // num_heads] shape = K.shape(transposed) shape = [shape[i] for i in range(5)] a, b = shape[-2:] ret_shape = K.stack(shape[:-2] + [a * b]) # [batch, height, width, depth_v] return K.reshape(transposed, ret_shape)
Example #11
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 #12
Source File: filterbank.py From kapre with MIT License | 5 votes |
def call(self, x): # reshape so that the last axis is freq axis if self.image_data_format == 'channels_first': x = K.permute_dimensions(x, [0, 1, 3, 2]) else: x = K.permute_dimensions(x, [0, 3, 2, 1]) output = K.dot(x, self.filterbank) # reshape back if self.image_data_format == 'channels_first': return K.permute_dimensions(output, [0, 1, 3, 2]) else: return K.permute_dimensions(output, [0, 3, 2, 1])
Example #13
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 #14
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 #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: time_frequency.py From kapre with MIT License | 5 votes |
def _spectrogram_mono(self, x): '''x.shape : (None, 1, len_src), returns 2D batch of a mono power-spectrogram''' x = K.permute_dimensions(x, [0, 2, 1]) x = K.expand_dims(x, 3) # add a dummy dimension (channel axis) subsample = (self.n_hop, 1) output_real = K.conv2d( x, self.dft_real_kernels, strides=subsample, padding=self.padding, data_format='channels_last', ) output_imag = K.conv2d( x, self.dft_imag_kernels, strides=subsample, padding=self.padding, data_format='channels_last', ) output = output_real ** 2 + output_imag ** 2 # now shape is (batch_sample, n_frame, 1, freq) if self.image_data_format == 'channels_last': output = K.permute_dimensions(output, [0, 3, 1, 2]) else: output = K.permute_dimensions(output, [0, 2, 3, 1]) return output
Example #17
Source File: layers.py From neuron with GNU General Public License v3.0 | 4 votes |
def call(self, args): if not isinstance(args, (list, tuple)): args = [args] self.cargs = len(args) # flatten if len(args) == 2: # input y, m # get inputs y, y_mask = args a_fact = int(y.get_shape().as_list()[-1] / y_mask.get_shape().as_list()[-1]) y_mask = K.repeat_elements(y_mask, a_fact, -1) y_flat = K.batch_flatten(y) # N x D y_mask_flat = K.batch_flatten(y_mask) # N x D # prepare switching matrix W = self.W # d x D w_tmp = K.expand_dims(W, 0) # 1 x d x D Wo = K.permute_dimensions(w_tmp, [0, 2, 1]) * K.expand_dims(y_mask_flat, -1) # N x D x d WoT = K.permute_dimensions(Wo, [0, 2, 1]) # N x d x D WotWo_inv = tf.matrix_inverse(K.batch_dot(WoT, Wo)) # N x d x d pre = K.batch_dot(WotWo_inv, WoT) # N x d x D res = K.batch_dot(pre, y_flat) # N x d if self.use_bias: res += K.expand_dims(self.bias, 0) else: x_data = args[0] shape = K.shape(x_data) x_data = K.batch_flatten(x_data) # N x d if self.use_bias: x_data -= self.bias res = K.dot(x_data, self.W) # reshape # Here you can mix integers and symbolic elements of `shape` pool_shape = tf.stack([shape[0], *self.orig_input_shape]) res = K.reshape(res, pool_shape) return res
Example #18
Source File: attn_augconv.py From keras-attention-augmented-convs with MIT License | 4 votes |
def call(self, inputs, **kwargs): if self.axis == 1: # If channels first, force it to be channels last for these ops inputs = K.permute_dimensions(inputs, [0, 2, 3, 1]) q, k, v = tf.split(inputs, [self.depth_k, self.depth_k, self.depth_v], axis=-1) q = self.split_heads_2d(q) k = self.split_heads_2d(k) v = self.split_heads_2d(v) # scale query depth_k_heads = self.depth_k / self.num_heads q *= (depth_k_heads ** -0.5) # [Batch, num_heads, height * width, depth_k or depth_v] if axis == -1 qk_shape = [self._batch, self.num_heads, self._height * self._width, self.depth_k // self.num_heads] v_shape = [self._batch, self.num_heads, self._height * self._width, self.depth_v // self.num_heads] flat_q = K.reshape(q, K.stack(qk_shape)) flat_k = K.reshape(k, K.stack(qk_shape)) flat_v = K.reshape(v, K.stack(v_shape)) # [Batch, num_heads, HW, HW] logits = tf.matmul(flat_q, flat_k, transpose_b=True) # Apply relative encodings if self.relative: h_rel_logits, w_rel_logits = self.relative_logits(q) logits += h_rel_logits logits += w_rel_logits weights = K.softmax(logits, axis=-1) attn_out = tf.matmul(weights, flat_v) attn_out_shape = [self._batch, self.num_heads, self._height, self._width, self.depth_v // self.num_heads] attn_out_shape = K.stack(attn_out_shape) attn_out = K.reshape(attn_out, attn_out_shape) attn_out = self.combine_heads_2d(attn_out) # [batch, height, width, depth_v] if self.axis == 1: # return to [batch, depth_v, height, width] for channels first attn_out = K.permute_dimensions(attn_out, [0, 3, 1, 2]) attn_out.set_shape(self.compute_output_shape(self._shape)) return attn_out
Example #19
Source File: utils.py From neuron with GNU General Public License v3.0 | 4 votes |
def tf_map_fn_axis(fn, elems, axis, **kwargs): """ apply map_fn along a specific axis if elems is a Tensor, axis is an int if elems is a list, axis is a list of same length """ # determine lists islist = isinstance(elems, (tuple, list)) if not islist: elems = [elems] assert not isinstance(axis, (tuple, list)), 'axis cannot be list if elements are not list' axis = [axis] elems_perm = [] for xi, x in enumerate(elems): a = axis[xi] s = len(x.get_shape().as_list()) if a == -1: a = s - 1 # move channels to front, so x will be [axis, ...] perm = [a] + list(range(0, a)) + list(range(a + 1, s)) elems_perm.append(K.permute_dimensions(x, perm)) # compute sptial deformation regularization for this channel if not islist: elems_perm = elems_perm[0] x_perm_trf = tf.map_fn(fn, elems_perm, **kwargs) if not islist: x_perm_trf = [x_perm_trf] # move in_channels back to end elems_trf = [] for xi, x in enumerate(x_perm_trf): a = axis[xi] s = len(x.get_shape().as_list()) if a == -1: a = s - 1 perm = list(range(1, a + 1)) + [0] + list(range(a + 1, s)) elems_trf.append(K.permute_dimensions(x, perm)) if not islist: elems_trf = elems_trf[0] return elems_trf
Example #20
Source File: backend.py From DeepPoseKit with Apache License 2.0 | 4 votes |
def find_subpixel_maxima( x, kernel_size, sigma, upsample_factor, coordinate_scale=1.0, confidence_scale=1.0, data_format=None, ): """Finds the 2D maxima contained in a 4D tensor. # Arguments x: Tensor or variable. data_format: string, `"channels_last"` or `"channels_first"`. # Returns A tensor. # Raises ValueError: if `data_format` is neither `"channels_last"` or `"channels_first"`. """ if data_format == "channels_first": x = permute_dimensions(x, [0, 2, 3, 1]) x_shape = K.shape(x) batch = x_shape[0] row = x_shape[1] col = x_shape[2] channels = x_shape[3] x = permute_dimensions(x, [0, 3, 1, 2]) x = K.reshape(x, [batch * channels, row, col]) x = _find_subpixel_maxima( x, kernel_size, sigma, upsample_factor, coordinate_scale, confidence_scale ) x = K.reshape(x, [batch, channels, 3]) return x elif data_format == "channels_last": x_shape = K.shape(x) batch = x_shape[0] row = x_shape[1] col = x_shape[2] channels = x_shape[3] x = permute_dimensions(x, [0, 3, 1, 2]) x = K.reshape(x, [batch * channels, row, col]) x = _find_subpixel_maxima( x, kernel_size, sigma, upsample_factor, coordinate_scale, confidence_scale ) x = K.reshape(x, [batch, channels, 3]) return x else: raise ValueError("Invalid data_format:", data_format)