tf.keras.layers.experimental.EinsumDense
Слой, использующий tf.einsum в качестве вычислительной основы.
Наследуется от: Layer
tf.keras.layers.experimental.EinsumDense(
equation, output_shape, activation=None, bias_axes=None,
kernel_initializer='glorot_uniform', bias_initializer='zeros',
kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None,
kernel_constraint=None, bias_constraint=None, **kwargs
)
Этот слой может выполнять вычисления einsum произвольной размерности.
| Аргументы | |
|---|---|
equation | Уравнение, описывающее выполняемое einsum. Это уравнение должно быть допустимой строкой einsum вида ab,bc->ac, ...ab,bc->...ac, или ab...,bc->ac..., где 'ab', 'bc' и 'ac' могут быть любыми допустимыми последовательностями выражений осей einsum. |
output_shape | Ожидаемая форма тензора вывода (исключая размерность пакета и любые размеры, представленные эллипсами). Можно указать None для любой размерности, которая неизвестна или может быть выведена из формы входного тензора. |
activation | Функция активации для использования. Если вы ничего не укажете, активация не применяется (то есть, используется "линейная" активация: a(x) = x). |
bias_axes | Строка, содержащая размерность(и) вывода, к которой применяется смещение. Каждый символ в строке bias_axes должен соответствовать символу в выходной части строки equation. |
kernel_initializer | Инициализатор матрицы весов kernel. |
bias_initializer | Инициализатор вектора смещения. |
kernel_regularizer | Функция регуляризации, применяемая к матрице весов kernel. |
bias_regularizer | Функция регуляризации, применяемая к вектору смещения. |
activity_regularizer | Функция регуляризации, применяемая к выводу слоя (его "активации"). |
kernel_constraint | Функция ограничения, применяемая к матрице весов kernel. |
bias_constraint | Функция ограничения, применяемая к вектору смещения. |
Примеры:
Слой плотного слоя со смещением с использованием einsum
Этот пример показывает, как создать стандартный слой Keras плотного слоя, используя операции einsum. Этот пример эквивалентен tf.keras.layers.Dense(64, use_bias=True).
layer = EinsumDense("ab,bc->ac", output_shape=64, bias_axes="c")
input_tensor = tf.keras.Input(shape=[32])
output_tensor = layer(input_tensor)
output_tensor
<tf.Tensor '...' shape=(None, 64) dtype=...>
Применение слоя плотного слоя к последовательности
Этот пример показывает, как создать слой, применяющий ту же операцию плотного слоя к каждому элементу в последовательности. Здесь 'output_shape' имеет два значения (так как в выводе две размерности, не являющиеся пакетными); первая размерность в output_shape равна None, потому что размерность последовательности b имеет неизвестную форму.
layer = EinsumDense("abc,cd->abd",
output_shape=(None, 64),
bias_axes="d")
input_tensor = tf.keras.Input(shape=[32, 128])
output_tensor = layer(input_tensor)
output_tensor
<tf.Tensor '...' shape=(None, 32, 64) dtype=...>
Применение слоя плотного слоя к последовательности с использованием эллипсов
Этот пример показывает, как создать слой, применяющий ту же операцию плотного слоя к каждому элементу в последовательности, но использующий обозначение эллипсов вместо указания пакета и размерностей последовательности.
Поскольку мы используем обозначение эллипсов и указали только одну ось, аргумент output_shape имеет одно значение. При создании таким образом, слой может обрабатывать любое количество размерностей последовательности — включая случай, когда размерность последовательности отсутствует.
layer = EinsumDense("...x,xy->...y", output_shape=64, bias_axes="y")
input_tensor = tf.keras.Input(shape=[32, 128])
output_tensor = layer(input_tensor)
output_tensor
<tf.Tensor '...' shape=(None, 32, 64) dtype=...>
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.3/api_docs/python/tf/keras/layers/experimental/EinsumDense