Keras 3 API 文件 / 層 API / 核心層 / Lambda 層

Lambda 層

[原始碼]

Lambda 類別

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() 方法以更可攜式的方式儲存。依賴子類別化層的模型也通常更容易視覺化和推理。

範例

# 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:要傳遞給函數的可選關鍵字參數字典。