Lambda
類別keras.layers.Lambda(function, output_shape=None, mask=None, arguments=None, **kwargs)
將任意表達式包裝為 Layer
物件。
Lambda
層的存在是為了在構建 Sequential 和 Functional API 模型時,可以使用任意表達式作為 Layer
。Lambda
層最適合用於簡單的操作或快速實驗。對於更進階的使用情境,建議編寫新的 Layer
子類別。
警告:Lambda
層具有序列化/反序列化限制!
不使用 Lambda
層而子類別化 Layer
的主要原因是儲存和檢查模型。Lambda
層透過序列化 Python bytecode 來儲存,這從根本上來說是不可移植的,並且可能不安全。它們應該僅在儲存它們的相同環境中載入。子類別化的層可以通過覆寫其 get_config()
方法以更便攜的方式儲存。依賴於子類別化 Layer 的模型通常也更容易視覺化和推理。
範例
# 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)
。compute_mask
層方法具有相同簽名的可調用物件,或將作為輸出遮罩返回的張量,無論輸入是什麼。