本文整理汇总了Python中keras.backend.stack方法的典型用法代码示例。如果您正苦于以下问题:Python backend.stack方法的具体用法?Python backend.stack怎么用?Python backend.stack使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类keras.backend
的用法示例。
在下文中一共展示了backend.stack方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: GenerateMCSamples
# 需要导入模块: from keras import backend [as 别名]
# 或者: from keras.backend import stack [as 别名]
def GenerateMCSamples(inp, layers, K_mc=20):
if K_mc == 1:
return apply_layers(inp, layers)
output_list = []
for _ in xrange(K_mc):
output_list += [apply_layers(inp, layers)] # THIS IS BAD!!! we create new dense layers at every call!!!!
def pack_out(output_list):
#output = K.pack(output_list) # K_mc x nb_batch x nb_classes
output = K.stack(output_list) # K_mc x nb_batch x nb_classes
return K.permute_dimensions(output, (1, 0, 2)) # nb_batch x K_mc x nb_classes
def pack_shape(s):
s = s[0]
assert len(s) == 2
return (s[0], K_mc, s[1])
out = Lambda(pack_out, output_shape=pack_shape)(output_list)
return out
# evaluation for classification tasks
示例2: posterior
# 需要导入模块: from keras import backend [as 别名]
# 或者: from keras.backend import stack [as 别名]
def posterior(atlas_full, ull_pred, flow, fns, max_feats):
"""
gpu-based implementation of posterior
given original full atlas and unnormalized log likelihood, warps atlas and computes (normalized) posterior
variables should be normal format, *not* keras format (i.e. not in batch)
unfortunately, since full atlases can be quite large (many labels),
we loop over groups of at most `max_feats` labels and stack at the end
"""
# run through label groups
# creating lists and concatenating at the end seems to be more efficient than
# filling in rows of data of a large array.
post = []
warped_atlas = []
for li, i in enumerate(range(0, atlas_full.shape[-1], max_feats)):
slc = slice(i, min(i + max_feats, atlas_full.shape[-1]))
po, wa = fns[li]([atlas_full[...,slc], ull_pred, flow])
post.append(po)
warped_atlas.append(wa)
return np.concatenate(post, -1), np.concatenate(warped_atlas, -1)
示例3: MakeStacked
# 需要导入模块: from keras import backend [as 别名]
# 或者: from keras.backend import stack [as 别名]
def MakeStacked(ins, x, num_to_stack):
'''
Stacked latent representations -- for temporal convolutions in particular
'''
new_ins = []
new_xs = []
x = Model(ins, x)
for i in range(num_to_stack):
new_x_ins = []
for inx in ins:
new_x_ins.append(Input(inx.shape[1:]))
new_ins += new_x_ins
new_xs.append(x(new_x_ins))
x = Lambda(lambda x: K.stack(x,axis=2))(new_xs)
return new_ins, x
示例4: call
# 需要导入模块: from keras import backend [as 别名]
# 或者: from keras.backend import stack [as 别名]
def call(self, inputs, **kwargs):
if isinstance(inputs, list): # true label is provided with shape = [None, n_classes], i.e. one-hot code.
assert len(inputs) == 2
inputs, a = inputs
mask = K.argmax(a, 1)
else: # if no true label, mask by the max length of capsules. Mainly used for prediction
# compute lengths of capsules
x = K.sqrt(K.sum(K.square(inputs), -1))
# generate the mask which is a one-hot code.
# mask.shape=[None, n_classes]=[None, num_capsule]
mask = K.argmax(x, 1)
increasing = tf.range(start=0, limit=tf.shape(inputs)[0], delta=1)
m = tf.stack([increasing, tf.cast(mask, tf.int32)], axis=1)
# inputs.shape=[None, num_capsule, dim_capsule]
# mask.shape=[None, num_capsule]
# masked.shape=[None, num_capsule * dim_capsule]
# x1 = tf.transpose(inputs, (0))
masked = tf.gather_nd(inputs, m)
return masked
示例5: loss
# 需要导入模块: from keras import backend [as 别名]
# 或者: from keras.backend import stack [as 别名]
def loss(self, y_true, y_pred):
from keras import backend as K
y_true = K.flatten(y_true)
output_indices = y_true // 10
updated_y_true = y_true - (10 * output_indices)
# We index into y_pred using flattened indices since Keras backend
# supports gather but has no equivalent of tf.gather_nd:
ordinals = K.arange(K.shape(y_true)[0])
flattened_indices = (
ordinals * y_pred.shape[1] + K.cast(output_indices, "int32"))
updated_y_pred = K.gather(K.flatten(y_pred), flattened_indices)
# Alternative implementation using tensorflow, which could be used if
# we drop support for other backends:
# import tensorflow as tf
# indexer = K.stack([
# ordinals,
# K.cast(output_indices, "int32")
# ], axis=-1)
#updated_y_pred = tf.gather_nd(y_pred, indexer)
return MSEWithInequalities().loss(updated_y_true, updated_y_pred)
示例6: output_sampling
# 需要导入模块: from keras import backend [as 别名]
# 或者: from keras.backend import stack [as 别名]
def output_sampling(self, output, rand_matrix):
# Generates a sampled selection based on raw output state vector
# Creates a cdf vector and compares against a randomly generated vector
# Requires a pre-generated rand_matrix (i.e. generated outside step function)
sampled_output = output / K.sum(output, axis=-1, keepdims=True) # (batch_size, self.units)
mod_sampled_output = sampled_output / K.exp(self.temperature)
norm_exp_sampled_output = mod_sampled_output / K.sum(mod_sampled_output, axis=-1, keepdims=True)
cdf_vector = K.cumsum(norm_exp_sampled_output, axis=-1)
cdf_minus_vector = cdf_vector - norm_exp_sampled_output
rand_matrix = K.stack([rand_matrix], axis=0)
rand_matrix = K.stack([rand_matrix], axis=2)
compared_greater_output = K.cast(K.greater(cdf_vector, rand_matrix), dtype='float32')
compared_lesser_output = K.cast(K.less(cdf_minus_vector, rand_matrix), dtype='float32')
final_output = compared_greater_output * compared_lesser_output
return final_output
示例7: yolo_eval
# 需要导入模块: from keras import backend [as 别名]
# 或者: from keras.backend import stack [as 别名]
def yolo_eval(yolo_outputs,
image_shape,
max_boxes=10,
score_threshold=.6,
iou_threshold=.5):
"""Evaluate YOLO model on given input batch and return filtered boxes."""
box_xy, box_wh, box_confidence, box_class_probs = yolo_outputs
boxes = yolo_boxes_to_corners(box_xy, box_wh)
boxes, scores, classes = yolo_filter_boxes(
boxes, box_confidence, box_class_probs, threshold=score_threshold)
# Scale boxes back to original image shape.
height = image_shape[0]
width = image_shape[1]
image_dims = K.stack([height, width, height, width])
image_dims = K.reshape(image_dims, [1, 4])
boxes = boxes * image_dims
# TODO: Something must be done about this ugly hack!
max_boxes_tensor = K.variable(max_boxes, dtype='int32')
K.get_session().run(tf.variables_initializer([max_boxes_tensor]))
nms_index = tf.image.non_max_suppression(
boxes, scores, max_boxes_tensor, iou_threshold=iou_threshold)
boxes = K.gather(boxes, nms_index)
scores = K.gather(scores, nms_index)
classes = K.gather(classes, nms_index)
return boxes, scores, classes
示例8: scale_boxes
# 需要导入模块: from keras import backend [as 别名]
# 或者: from keras.backend import stack [as 别名]
def scale_boxes(boxes, image_shape):
""" Scales the predicted boxes in order to be drawable on the image"""
height = image_shape[0]
width = image_shape[1]
image_dims = K.stack([height, width, height, width])
image_dims = K.reshape(image_dims, [1, 4])
boxes = boxes * image_dims
return boxes
示例9: yolo_eval
# 需要导入模块: from keras import backend [as 别名]
# 或者: from keras.backend import stack [as 别名]
def yolo_eval(yolo_outputs,
image_shape,
max_boxes=10,
score_threshold=.6,
iou_threshold=.5):
"""Evaluate YOLO model on given input batch and return filtered boxes."""
box_confidence, box_xy, box_wh, box_class_probs = yolo_outputs
boxes = yolo_boxes_to_corners(box_xy, box_wh)
boxes, scores, classes = yolo_filter_boxes(
box_confidence, boxes, box_class_probs, threshold=score_threshold)
# Scale boxes back to original image shape.
height = image_shape[0]
width = image_shape[1]
image_dims = K.stack([height, width, height, width])
image_dims = K.reshape(image_dims, [1, 4])
boxes = boxes * image_dims
# TODO: Something must be done about this ugly hack!
max_boxes_tensor = K.variable(max_boxes, dtype='int32')
K.get_session().run(tf.variables_initializer([max_boxes_tensor]))
nms_index = tf.image.non_max_suppression(
boxes, scores, max_boxes_tensor, iou_threshold=iou_threshold)
boxes = K.gather(boxes, nms_index)
scores = K.gather(scores, nms_index)
classes = K.gather(classes, nms_index)
return boxes, scores, classes
示例10: test_keras_unstack_hack
# 需要导入模块: from keras import backend [as 别名]
# 或者: from keras.backend import stack [as 别名]
def test_keras_unstack_hack():
y_true_np = np.random.random([1, 3, 2])
y_true_np[:, :, 0] = 0
y_true_np[:, :, 1] = 1
y_true_keras = K.variable(y_true_np)
y, u = wtte._keras_unstack_hack(y_true_keras)
y_true_keras_new = K.stack([y, u], axis=-1)
np.testing.assert_array_equal(K.eval(y_true_keras_new), y_true_np)
# SANITY CHECK: Use pure Weibull data censored at C(ensoring point).
# Should converge to the generating A(alpha) and B(eta) for each timestep
示例11: gram_matrix
# 需要导入模块: from keras import backend [as 别名]
# 或者: from keras.backend import stack [as 别名]
def gram_matrix(x, norm_by_channels=False):
'''
Returns the Gram matrix of the tensor x.
'''
if K.ndim(x) == 3:
features = K.batch_flatten(K.permute_dimensions(x, (2, 0, 1)))
shape = K.shape(x)
C, H, W = shape[0], shape[1], shape[2]
gram = K.dot(features, K.transpose(features))
elif K.ndim(x) == 4:
# Swap from (H, W, C) to (B, C, H, W)
x = K.permute_dimensions(x, (0, 3, 1, 2))
shape = K.shape(x)
B, C, H, W = shape[0], shape[1], shape[2], shape[3]
# Reshape as a batch of 2D matrices with vectorized channels
features = K.reshape(x, K.stack([B, C, H*W]))
# This is a batch of Gram matrices (B, C, C).
gram = K.batch_dot(features, features, axes=2)
else:
raise ValueError('The input tensor should be either a 3d (H, W, C) or 4d (B, H, W, C) tensor.')
# Normalize the Gram matrix
if norm_by_channels:
denominator = C * H * W # Normalization from Johnson
else:
denominator = H * W # Normalization from Google
gram = gram / K.cast(denominator, x.dtype)
return gram
示例12: _ctdet_decode
# 需要导入模块: from keras import backend [as 别名]
# 或者: from keras.backend import stack [as 别名]
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
示例13: _make_regular_grids
# 需要导入模块: from keras import backend [as 别名]
# 或者: from keras.backend import stack [as 别名]
def _make_regular_grids(self, batch_size, height, width):
# making a single regular grid
x_linspace = K_linspace(-1., 1., width)
y_linspace = K_linspace(-1., 1., height)
x_coordinates, y_coordinates = K_meshgrid(x_linspace, y_linspace)
x_coordinates = K.flatten(x_coordinates)
y_coordinates = K.flatten(y_coordinates)
ones = K.ones_like(x_coordinates)
grid = K.concatenate([x_coordinates, y_coordinates, ones], 0)
# repeating grids for each batch
grid = K.flatten(grid)
grids = K.tile(grid, K.stack([batch_size]))
return K.reshape(grids, (batch_size, 3, height * width))
示例14: _stack_permute_axis_zero
# 需要导入模块: from keras import backend [as 别名]
# 或者: from keras.backend import stack [as 别名]
def _stack_permute_axis_zero(xs):
xs = Lambda(lambda xs: K.stack(xs, axis=0))(xs)
# axes (0, 1) are permuted
perm = [1, 0] + list(range(2, xs.shape.ndims))
xs = Lambda(lambda xs: K.permute_dimensions(xs, perm))(xs)
return xs
示例15: _to_normal2d
# 需要导入模块: from keras import backend [as 别名]
# 或者: from keras.backend import stack [as 别名]
def _to_normal2d(output_batch) -> ds.MultivariateNormalTriL:
"""
:param output_batch: (n_samples, 5)
:return
"""
# mean of x and y
x_mean = Lambda(lambda o: o[:, 0])(output_batch)
y_mean = Lambda(lambda o: o[:, 1])(output_batch)
# std of x and y
# std is must be 0 or positive
x_std = Lambda(lambda o: K.exp(o[:, 2]))(output_batch)
y_std = Lambda(lambda o: K.exp(o[:, 3]))(output_batch)
# correlation coefficient
# correlation coefficient range is [-1, 1]
cor = Lambda(lambda o: K.tanh(o[:, 4]))(output_batch)
loc = Concatenate()([
Lambda(lambda x_mean: K.expand_dims(x_mean, 1))(x_mean),
Lambda(lambda y_mean: K.expand_dims(y_mean, 1))(y_mean)
])
x_var = Lambda(lambda x_std: K.square(x_std))(x_std)
y_var = Lambda(lambda y_std: K.square(y_std))(y_std)
xy_cor = Multiply()([x_std, y_std, cor])
cov = Lambda(lambda inputs: K.stack(inputs, axis=0))(
[x_var, xy_cor, xy_cor, y_var])
cov = Lambda(lambda cov: K.permute_dimensions(cov, (1, 0)))(cov)
cov = Reshape((2, 2))(cov)
scale_tril = Lambda(lambda cov: tf.cholesky(cov))(cov)
mvn = ds.MultivariateNormalTriL(loc, scale_tril)
return mvn