Lambda
classkeras.layers.Lambda(function, output_shape=None, mask=None, arguments=None, **kwargs)
Wraps arbitrary expressions as a Layer
object.
The Lambda
layer exists so that arbitrary expressions can be used
as a Layer
when constructing Sequential
and Functional API models. Lambda
layers are best suited for simple
operations or quick experimentation. For more advanced use cases,
prefer writing new subclasses of Layer
.
WARNING: Lambda
layers have (de)serialization limitations!
The main reason to subclass Layer
instead of using a
Lambda
layer is saving and inspecting a model. Lambda
layers
are saved by serializing the Python bytecode, which is fundamentally
non-portable and potentially unsafe.
They should only be loaded in the same environment where
they were saved. Subclassed layers can be saved in a more portable way
by overriding their get_config()
method. Models that rely on
subclassed Layers are also often easier to visualize and reason about.
Example
# add a x -> x^2 layer
model.add(Lambda(lambda x: x ** 2))
Arguments
output_shape = (input_shape[0], ) + output_shape
or,
the input is None
and the sample dimension is also None
:
output_shape = (None, ) + output_shape
.
If a function, it specifies the
entire shape as a function of the input shape:
output_shape = f(input_shape)
.compute_mask
layer method, or a tensor
that will be returned as output mask regardless
of what the input is.