tf.keras.layers.EinsumDense
Слой, использующий einsum в качестве базовой операции вычисления.
tf.keras.layers.EinsumDense(
equation,
output_shape,
activation=None,
bias_axes=None,
kernel_initializer='glorot_uniform',
bias_initializer='zeros',
kernel_regularizer=None,
bias_regularizer=None,
kernel_constraint=None,
bias_constraint=None,
lora_rank=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 | Функция регуляризации, применяемая к вектору смещения. |
kernel_constraint | Функция ограничения, применяемая к матрице весов kernel. |
bias_constraint | Функция ограничения, применяемая к вектору смещения. |
lora_rank | Необязательное целое число. Если задано, прямой проход слоя реализует LoRA (Low-Rank Adaptation) с указанным рангом. LoRA делает ядро слоя нетренируемым и заменяет его дельтой относительно исходного ядра, полученной перемножением двух обучаемых матриц меньшего ранга (факторизация выполняется по последнему измерению). Это может помочь снизить вычислительные затраты при дообучении больших полносвязных слоёв. LoRA также можно включить для существующего слоя EinsumDense, вызвав layer.enable_lora(rank). |
**kwargs | Именованные аргументы базового слоя, например name и dtype. |
Примеры:
Полносвязный слой со смещением и операциями einsum
В этом примере показано, как создать стандартный полносвязный слой Keras с помощью операций einsum. Этот пример эквивалентен keras.layers.Dense(64, use_bias=True).
layer = keras.layers.EinsumDense("ab,bc->ac",
output_shape=64,
bias_axes="c")
input_tensor = keras.Input(shape=[32])
output_tensor = layer(input_tensor)
output_tensor.shape
(None, 64)Применение полносвязного слоя к последовательности
В этом примере показано, как создать слой, применяющий одну и ту же полносвязную операцию к каждому элементу последовательности. Здесь аргумент output_shape содержит два значения (поскольку в выходных данных есть два измерения, не относящихся к пакету); первое измерение в output_shape равно None, так как размер измерения последовательности b неизвестен.
layer = keras.layers.EinsumDense("abc,cd->abd",
output_shape=(None, 64),
bias_axes="d")
input_tensor = keras.Input(shape=[32, 128])
output_tensor = layer(input_tensor)
output_tensor.shape
(None, 32, 64)Применение полносвязного слоя к последовательности с использованием многоточия
В этом примере показано, как создать слой, применяющий одну и ту же полносвязную операцию к каждому элементу последовательности, но вместо явного указания измерений пакета и последовательности используется нотация с многоточием.
Поскольку мы используем нотацию с многоточием и указали только одну ось, аргумент output_shape содержит одно значение. Созданный таким образом слой может обрабатывать любое количество измерений последовательности, в том числе случаи, когда измерений последовательности нет.
layer = keras.layers.EinsumDense("...x,xy->...y",
output_shape=64,
bias_axes="y")
input_tensor = keras.Input(shape=[32, 128])
output_tensor = layer(input_tensor)
output_tensor.shape
(None, 32, 64)| Атрибуты | |
|---|---|
input | Возвращает входной тензор (или тензоры) символьной операции. Возвращает только тензор (или тензоры), соответствующий первому вызову операции. |
kernel | |
output | Возвращает выходной тензор (или тензоры) слоя. Возвращает только тензор (или тензоры), соответствующий первому вызову операции. |
Методы
enable_lora
enable_lora(
rank, a_initializer='he_uniform', b_initializer='zeros'
)
from_config
@classmethod
from_config(
config
)
Создаёт слой на основе его конфигурации.
Этот метод является обратным по отношению к get_config и позволяет создать такой же слой из словаря конфигурации. Он не обрабатывает связи между слоями (это выполняет Network) и веса (это выполняет set_weights).
| Аргументы | |
|---|---|
config | Словарь Python, обычно являющийся результатом вызова get_config. |
| Возвращает | |
|---|---|
| Экземпляр слоя. |
quantized_build
quantized_build(
input_shape, mode
)
symbolic_call
symbolic_call(
*args, **kwargs
)
| Переменные класса | |
|---|---|
| QUANTIZATION_MODE_ERROR_TEMPLATE | ("Invalid quantization mode. Expected one of ('int8', 'float8'). Received: " 'quantization_mode={mode}') |
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/keras/layers/EinsumDense