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,
lora_alpha=None,
gptq_unpacked_column_size=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。lora_alpha: 可选整数。如果设置,此参数将在正向传播期间缩放低秩自适应增量(由两个低秩可训练矩阵的乘积计算得出)。增量将按 lora_alpha / lora_rank 进行缩放,这允许您独立于 lora_rank 微调 LoRA 调整的强度。name 和 dtype。示例
带有 einsums 的带偏置的密集层
本示例展示了如何使用 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)