Spec-Zone.ru › TensorFlow

tf.keras.layers.FlaxLayer

Слой Keras, оборачивающий модуль Flax.

Наследует от: JaxLayer, Layer, Operation

tf.keras.layers.FlaxLayer(
    module, method=None, variables=None, **kwargs
)

Этот слой позволяет использовать компоненты Flax в виде экземпляров flax.linen.Module в Keras при использовании JAX в качестве бэкенда Keras.

Метод модуля, используемый для прямого прохода, можно указать с помощью аргумента method; по умолчанию используется __call__. Этот метод должен принимать следующие аргументы с указанными именами:

  • self, если метод привязан к модулю, как в случае значения по умолчанию __call__, и module в противном случае, чтобы передать модуль.
  • inputs: входные данные модели — массив JAX или PyTree массивов.
  • training (необязательно): аргумент, указывающий, работает ли модель в режиме обучения или вывода; в режиме обучения передаётся True.

FlaxLayer автоматически обрабатывает нетренируемое состояние модели и необходимые RNG. Обратите внимание, что параметру mutable метода flax.linen.Module.apply() присваивается значение DenyList(["params"]). Таким образом предполагается, что все переменные вне коллекции "params" являются нетренируемыми весами.

В этом примере показано, как создать FlaxLayer на основе Module Flax, используя метод __call__ по умолчанию и не указывая аргумент обучения:

class MyFlaxModule(flax.linen.Module):
    @flax.linen.compact
    def __call__(self, inputs):
        x = inputs
        x = flax.linen.Conv(features=32, kernel_size=(3, 3))(x)
        x = flax.linen.relu(x)
        x = flax.linen.avg_pool(x, window_shape=(2, 2), strides=(2, 2))
        x = x.reshape((x.shape[0], -1))  # flatten
        x = flax.linen.Dense(features=200)(x)
        x = flax.linen.relu(x)
        x = flax.linen.Dense(features=10)(x)
        x = flax.linen.softmax(x)
        return x

flax_module = MyFlaxModule()
keras_layer = FlaxLayer(flax_module)

В этом примере показано, как обернуть метод модуля, чтобы он соответствовал требуемой сигнатуре. Это позволяет использовать несколько входных аргументов и аргумент обучения с другим именем и значениями. Кроме того, здесь показано, как использовать функцию, не привязанную к модулю.

class MyFlaxModule(flax.linen.Module):
    @flax.linen.compact
    def forward(self, input1, input2, deterministic):
        ...
        return outputs

def my_flax_module_wrapper(module, inputs, training):
    input1, input2 = inputs
    return module.forward(input1, input2, not training)

flax_module = MyFlaxModule()
keras_layer = FlaxLayer(
    module=flax_module,
    method=my_flax_module_wrapper,
)
Аргументы
module Экземпляр flax.linen.Module или его подкласса.
method Метод для вызова модели. Обычно это метод в Module. Если он не указан, используется метод __call__. method также может быть функцией, не определённой в Module; в этом случае первым аргументом она должна принимать Module. Он используется как для Module.init, так и для Module.apply. Подробные сведения приведены в описании аргумента method метода flax.linen.Module.apply().
variables dict, содержащий все переменные модуля в том же формате, что и результат вызова flax.linen.Module.init(). Он должен содержать ключ "params" и, если применимо, другие ключи для коллекций переменных, представляющих нетренируемое состояние. Это позволяет передавать обученные параметры и изученное нетренируемое состояние либо управлять инициализацией. Если передан None, функция init модуля вызывается во время построения для инициализации переменных модели.
Атрибуты
input Возвращает входные тензоры символьной операции.

Возвращает только тензоры, соответствующие первому вызову операции.

output Возвращает выходные тензоры слоя.

Возвращает только тензоры, соответствующие первому вызову операции.

Методы

from_config

Посмотреть исходный код

@classmethod
from_config(
    config
)

Создаёт слой из его конфигурации.

Этот метод является обратным по отношению к get_config и позволяет создать такой же слой из словаря конфигурации. Он не обрабатывает связи слоя (это делает Network) и веса (это делает set_weights).

Аргументы
config Словарь Python, обычно являющийся результатом вызова get_config.
Возвращает
Экземпляр слоя.

symbolic_call

Посмотреть исходный код

symbolic_call(
    *args, **kwargs
)

© 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/FlaxLayer

Spec-Zone.ru

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