Spec-Zone.ru › TensorFlow

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API