tf.keras.layers.experimental.EinsumDense
Слой, использующий tf.einsum в качестве вычисления.
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
<... 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
<... 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
<... 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.4/api_docs/python/tf/keras/layers/experimental/EinsumDense