Lambda
classkeras.layers.Lambda(function, output_shape=None, mask=None, arguments=None, **kwargs)
将任意表达式包装为 Layer
对象.
Lambda
层的存在是为了在构建顺序模型和函数式 API 模型时,可以使用任意表达式作为 Layer
.Lambda
层最适合用于简单操作或快速实验.对于更高级的使用场景,建议编写新的 Layer
子类.
警告:Lambda
层存在(反)序列化限制!
主要原因是子类化 Layer
而不是使用 Lambda
层是为了保存和检查模型.Lambda
层通过序列化 Python 字节码来保存,这本质上是非便携的且可能不安全的.它们只能在保存它们的环境中加载.子类化层可以通过重写其 get_config()
方法以更便携的方式保存.依赖于子类化层的模型通常也更容易可视化和推理.
示例:
# 添加一个 x -> x^2 层
model.add(Lambda(lambda x: x ** 2))
参数:
function: 要评估的函数.以输入张量为第一个参数.
output_shape: 函数预期的输出形状.如果未明确提供,通常可以推断出来.可以是元组或函数.如果是元组,它仅指定第一个维度及以后;样本维度假定为与输入相同:
output_shape = (input_shape[0], ) + output_shape
或者,
输入为 None
且样本维度也为 None
:
output_shape = (None, ) + output_shape
.
如果是函数,它根据输入形状指定整个形状:
output_shape = f(input_shape)
.
mask: 要么为 None(表示无掩码),要么为具有与 compute_mask
层方法相同签名的可调用对象,或者为无论输入是什么都将作为输出掩码返回的张量.
arguments: 可选的关键字参数字典,传递给函数.