本文整理汇总了Python中keras.backend.arange方法的典型用法代码示例。如果您正苦于以下问题:Python backend.arange方法的具体用法?Python backend.arange怎么用?Python backend.arange使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类keras.backend
的用法示例。
在下文中一共展示了backend.arange方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: call
# 需要导入模块: from keras import backend [as 别名]
# 或者: from keras.backend import arange [as 别名]
def call(self, inputs, mask=None, **kwargs):
if isinstance(inputs, list):
query, key, value = inputs
else:
query = key = value = inputs
if isinstance(mask, list):
mask = mask[1]
feature_dim = K.shape(query)[-1]
e = K.batch_dot(query, key, axes=2) / K.sqrt(K.cast(feature_dim, dtype=K.floatx()))
e = K.exp(e - K.max(e, axis=-1, keepdims=True))
if self.history_only:
query_len, key_len = K.shape(query)[1], K.shape(key)[1]
indices = K.tile(K.expand_dims(K.arange(key_len), axis=0), [query_len, 1])
upper = K.expand_dims(K.arange(key_len), axis=-1)
e *= K.expand_dims(K.cast(indices <= upper, K.floatx()), axis=0)
if mask is not None:
e *= K.cast(K.expand_dims(mask, axis=-2), K.floatx())
a = e / (K.sum(e, axis=-1, keepdims=True) + K.epsilon())
v = K.batch_dot(a, value)
if self.return_attention:
return [v, a]
return v
示例2: positional_signal
# 需要导入模块: from keras import backend [as 别名]
# 或者: from keras.backend import arange [as 别名]
def positional_signal(hidden_size: int, length: int,
min_timescale: float = 1.0, max_timescale: float = 1e4):
"""
Helper function, constructing basic positional encoding.
The code is partially based on implementation from Tensor2Tensor library
https://github.com/tensorflow/tensor2tensor/blob/master/tensor2tensor/layers/common_attention.py
"""
if hidden_size % 2 != 0:
raise ValueError(
f"The hidden dimension of the model must be divisible by 2."
f"Currently it is {hidden_size}")
position = K.arange(0, length, dtype=K.floatx())
num_timescales = hidden_size // 2
log_timescale_increment = K.constant(
(np.log(float(max_timescale) / float(min_timescale)) /
(num_timescales - 1)),
dtype=K.floatx())
inv_timescales = (
min_timescale *
K.exp(K.arange(num_timescales, dtype=K.floatx()) *
-log_timescale_increment))
scaled_time = K.expand_dims(position, 1) * K.expand_dims(inv_timescales, 0)
signal = K.concatenate([K.sin(scaled_time), K.cos(scaled_time)], axis=1)
return K.expand_dims(signal, axis=0)
示例3: test_repeat_elements
# 需要导入模块: from keras import backend [as 别名]
# 或者: from keras.backend import arange [as 别名]
def test_repeat_elements(self):
reps = 3
for ndims in [1, 2, 3]:
shape = np.arange(2, 2 + ndims)
arr = np.arange(np.prod(shape)).reshape(shape)
for rep_axis in range(ndims):
np_rep = np.repeat(arr, reps, axis=rep_axis)
check_single_tensor_operation('repeat_elements', arr, BACKENDS,
rep=reps, axis=rep_axis,
assert_value_with_ref=np_rep)
if K.backend() != 'cntk':
shape = list(shape)
shape[rep_axis] = None
x = K.placeholder(shape=shape)
y = K.repeat_elements(x, reps, axis=rep_axis)
assert y._keras_shape == tuple(shape)
assert y._keras_shape == K.int_shape(y)
示例4: test_tile
# 需要导入模块: from keras import backend [as 别名]
# 或者: from keras.backend import arange [as 别名]
def test_tile(self):
shape = (3, 4)
arr = np.arange(np.prod(shape)).reshape(shape)
check_single_tensor_operation('tile', arr, BACKENDS, n=[2, 1])
check_single_tensor_operation('tile', (2, 5), BACKENDS, n=[5, 2])
# test theano shape inference when
# input shape has None entries
if K.backend() == 'theano':
x = K.placeholder(shape=(None, 4))
n = 2
y = K.tile(x, n)
assert y._keras_shape == (None, 8)
n = (4, 3)
y = K.tile(x, n)
assert y._keras_shape == (None, 12)
示例5: test_gather
# 需要导入模块: from keras import backend [as 别名]
# 或者: from keras.backend import arange [as 别名]
def test_gather(self):
shape = (10, 2, 3)
ref = np.arange(np.prod(shape)).reshape(shape)
inds = [1, 3, 7, 9]
z_list = [k.eval(k.gather(k.variable(ref), k.variable(inds, dtype='int32')))
for k in BACKENDS]
assert_list_pairwise(z_list)
assert_list_keras_shape(z_list)
# test theano shape inference when
# input shape has None entries
if K.backend() == 'theano':
x = K.placeholder(shape=(None, 3, 4))
indices = K.placeholder(shape=(5, 6), dtype='int32')
y = K.gather(x, indices)
assert y._keras_shape == (5, 6, 3, 4)
示例6: test_map
# 需要导入模块: from keras import backend [as 别名]
# 或者: from keras.backend import arange [as 别名]
def test_map(self):
x = np.random.rand(10, 3).astype(np.float32)
vx = K.variable(x)
kx = K.eval(K.map_fn(K.sum, vx))
# make sure we can also walk the indexes in tensorflow which we
# can't without specifying dtype
kx2 = K.eval(K.map_fn(
lambda i: K.sum(vx[i]),
K.arange(10),
dtype=K.floatx()
))
assert (10,) == kx.shape
assert (10,) == kx2.shape
assert_allclose(x.sum(axis=1), kx, atol=1e-05)
assert_allclose(kx, kx2, atol=1e-05)
示例7: call
# 需要导入模块: from keras import backend [as 别名]
# 或者: from keras.backend import arange [as 别名]
def call(self, x):
if (self.size is None) or (self.mode == 'sum'):
self.size = int(x.shape[-1])
batch_size, seq_len = K.shape(x)[0], K.shape(x)[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)
# K.arange不支持变长,只好用这种方法生成
position_i = K.cumsum(K.ones_like(x[:, :, 0]), 1) - 1
position_i = K.expand_dims(position_i, 2)
position_ij = K.dot(position_i, position_j)
position_ij = K.concatenate(
[K.cos(position_ij), K.sin(position_ij)], 2)
if self.mode == 'sum':
return position_ij + x
elif self.mode == 'concat':
return K.concatenate([position_ij, x], 2)