Keras 3 API 文档 / 层 API / 核心层 / Lambda层

Lambda层

[source]

Lambda class

keras.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: 可选的关键字参数字典,传递给函数.