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

Lambda 层

[来源]

Lambda

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

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

Lambda 层的作用是在构建顺序模型(Sequential API)和函数式模型(Functional API)时,将任意表达式用作 LayerLambda 层最适合简单的操作或快速实验。对于更高级的用例,最好编写新的 Layer 子类。

警告:Lambda 层存在(反)序列化限制!

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

示例

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