Lambda
类keras.layers.Lambda(function, output_shape=None, mask=None, arguments=None, **kwargs)
将任意表达式包装成 Layer
对象。
Lambda
层的存在是为了在构建顺序和函数式 API 模型时,将任意表达式用作 Layer
。Lambda
层最适合简单操作或快速实验。对于更高级的用例,建议编写新的 Layer
子类。
警告:Lambda
层存在(反)序列化限制!
不使用 Lambda
层而使用 Layer
子类的主要原因是保存和检查模型。Lambda
层通过序列化 Python 字节码来保存,这本质上是不可移植的,而且可能不安全。它们只能在与保存它们的环境相同的情况下加载。子类化层可以通过覆盖它们的 get_config()
方法以更便携的方式保存。依赖子类化层的模型通常也更容易可视化和理解。
示例
# add a x -> x^2 layer
model.add(Lambda(lambda x: x ** 2))
参数
output_shape = (input_shape[0], ) + output_shape
,要么输入为 None
,样本维度也为 None
:output_shape = (None, ) + output_shape
。如果为函数,它将整个形状指定为输入形状的函数:output_shape = f(input_shape)
。None
(表示没有掩码)或具有与 compute_mask
层方法相同的签名的可调用对象,或者无论输入是什么都将作为输出掩码返回的张量。