tf.keras.layers.EinsumDense
Слой, использующий einsum в качестве базового вычисления.
Наследуется от: Layer, Operation
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 (адаптацию малого ранга) с указанным рангом. 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