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