EinsumDense
類別keras.layers.EinsumDense(
equation,
output_shape,
activation=None,
bias_axes=None,
kernel_initializer="glorot_uniform",
bias_initializer="zeros",
kernel_regularizer=None,
bias_regularizer=None,
kernel_constraint=None,
bias_constraint=None,
lora_rank=None,
**kwargs
)
一個使用 einsum
作為後端計算的層。
此層可以執行任意維度的 einsum 計算。
參數
ab,bc->ac
、...ab,bc->...ac
或 ab...,bc->ac...
,其中 'ab'、'bc' 和 'ac' 可以是任何有效的 einsum 軸表達式序列。None
。a(x) = x
)。bias_axes
字串中的每個字元都應對應於 equation
字串輸出部分中的字元。kernel
權重矩陣的初始化器。kernel
權重矩陣的正規化函數。kernel
權重矩陣的約束函數。layer.enable_lora(rank)
在現有的 EinsumDense
層上啟用 LoRA。name
和 dtype
。範例
使用 einsum 的偏差密集層
此範例示範如何使用 einsum 運算實例化標準 Keras 密集層。此範例等效於 keras.layers.Dense(64, use_bias=True)
。
>>> layer = keras.layers.EinsumDense("ab,bc->ac",
... output_shape=64,
... bias_axes="c")
>>> input_tensor = keras.Input(shape=[32])
>>> output_tensor = layer(input_tensor)
>>> output_tensor.shape
(None, 64)
將密集層應用於序列
此範例示範如何實例化一個層,該層將相同的密集運算應用於序列中的每個元素。在此範例中,output_shape
有兩個值(因為輸出中有兩個非批次維度);output_shape
中的第一個維度是 None
,因為序列維度 b
具有未知的形狀。
>>> layer = keras.layers.EinsumDense("abc,cd->abd",
... output_shape=(None, 64),
... bias_axes="d")
>>> input_tensor = keras.Input(shape=[32, 128])
>>> output_tensor = layer(input_tensor)
>>> output_tensor.shape
(None, 32, 64)
使用省略號將密集層應用於序列
此範例示範如何實例化一個層,該層將相同的密集運算應用於序列中的每個元素,但使用省略號表示法而不是指定批次和序列維度。
因為我們正在使用省略號表示法並且僅指定了一個軸,所以 output_shape
參數是一個單一值。以這種方式實例化時,該層可以處理任意數量的序列維度,包括不存在序列維度的情況。
>>> layer = keras.layers.EinsumDense("...x,xy->...y",
... output_shape=64,
... bias_axes="y")
>>> input_tensor = keras.Input(shape=[32, 128])
>>> output_tensor = layer(input_tensor)
>>> output_tensor.shape
(None, 32, 64)