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

Lambda 层

[源代码]

Lambda

keras.layers.Lambda(function, output_shape=None, mask=None, arguments=None, **kwargs)

将任意表达式封装为 Layer 对象。

Lambda 层存在的原因是,在构建 Sequential 和 Functional API 模型时,任意表达式可以被用作 LayerLambda 层最适合简单的操作或快速实验。 对于更高级的用例,建议编写新的 Layer 子类。

警告:Lambda 层具有(反)序列化限制!

子类化 Layer 而不是使用 Lambda 层的主要原因是保存和检查模型。 Lambda 层通过序列化 Python 字节码来保存,这从根本上来说是不可移植的,并且可能不安全。 它们应该只在保存它们的相同环境中加载。 通过重写它们的 get_config() 方法,子类化层可以以更可移植的方式保存。 依赖于子类化 Layer 的模型也通常更容易可视化和推理。

示例

# add a x -> x^2 layer
model.add(Lambda(lambda x: x ** 2))

参数

  • function: 要评估的函数。 将输入张量作为第一个参数。
  • output_shape: 来自函数的预期输出形状。 如果未明确提供,则通常可以推断出此参数。 可以是元组或函数。 如果是元组,它仅指定第一个维度之后;样本维度假定与输入相同:output_shape = (input_shape[0], ) + output_shape,或者,输入为 None 且样本维度也为 Noneoutput_shape = (None, ) + output_shape。 如果是函数,它将整个形状指定为输入形状的函数:output_shape = f(input_shape)
  • mask: 可以是 None(表示不进行掩码),或一个可调用对象,其签名与 compute_mask 层方法相同,或者一个张量,无论输入是什么,都将作为输出掩码返回。
  • arguments: 可选的关键字参数字典,要传递给函数的。