从代码角度要想了解keras不同层支持什么功能和特性可以考虑从构造函数入手。
dense
units (必需)
含义:整数,表示该层输出空间的维度。这决定了该层有多少个神经元。
默认值:无默认值,必须指定。
activation
含义:要使用的激活函数。 如果未指定,则不应用激活函数(即线性激活:a(x) = x)。
默认值:None。
常见选项:'relu'、'sigmoid'、'softmax'、'tanh' 等,也可以是 Keras 激活函数对象(如 tf.keras.activations.relu)。
use_bias
含义:布尔值,表示层是否使用偏置向量。偏置向量会在激活函数之前添加到输出中。
默认值:True。
kernel_initializer
含义:用于初始化层权重矩阵(即 kernel,连接输入和输出的权重)的初始化策略。
默认值:'glorot_uniform' (也称为 Xavier uniform)。
常见选项:'zeros'、'ones'、'random_normal'、'random_uniform'、'truncated_normal'、'lecun_uniform'、'he_normal'、'he_uniform' 等,也可以是初始化器对象。
bias_initializer
含义:用于初始化偏置向量的初始化策略。
默认值:'zeros'。
常见选项:与 kernel_initializer 类似。
kernel_regularizer
含义:用于对层权重矩阵应用正则化函数,以防止过拟合。
默认值:None (不应用正则化)。
常见选项:tf.keras.regularizers.l1()、tf.keras.regularizers.l2()、tf.keras.regularizers.l1_l2() 等。
bias_regularizer
含义:用于对偏置向量应用正则化函数。
默认值:None (不应用正则化)。
常见选项:与 kernel_regularizer 类似。
activity_regularizer
含义:用于对层的输出(激活值)应用正则化函数。
默认值:None (不应用正则化)。
常见选项:与 kernel_regularizer 类似。
kernel_constraint
含义:用于对层权重矩阵应用约束函数,例如非负性或范数约束。
默认值:None (不应用约束)。
常见选项:tf.keras.constraints.MaxNorm()、tf.keras.constraints.NonNeg() 等。
bias_constraint
含义:用于对偏置向量应用约束函数。
默认值:None (不应用约束)。
常见选项:与 kernel_constraint 类似。
LSTM
units (必需)
含义:正整数,表示 LSTM 层输出空间的维度。这同时也是隐藏状态 (hidden state, h_t) 和细胞状态 (cell state, C_t) 的维度。简单来说,它决定了 LSTM 单元中"神经元"的数量。
默认值:无默认值,必须指定。
activation
含义:用于细胞状态更新和输出门激活的激活函数。它应用于 LSTM 单元的内部变换。
默认值:'tanh' (双曲正切)。tanh 函数有助于将细胞状态的值限制在 -1 到 1 之间。
recurrent_activation
含义:用于输入门、遗忘门和输出门激活的激活函数。这些门通常需要输出介于 0 和 1 之间的值,以表示"通过"或"遗忘"的比例。
默认值:'sigmoid' (S 型函数)。sigmoid 函数非常适合作为门控机制的激活函数,因为它将输出压缩到 (0, 1) 范围。
return_sequences
含义:布尔值。
如果为 True,则层将返回完整的输出序列(每个时间步的输出)。输出张量的形状将是 (batch_size, timesteps, units)。
如果为 False (默认值),则层只返回输入序列的最后一个时间步的输出。输出张量的形状将是 (batch_size, units)。
默认值:False。
return_state
含义:布尔值。
如果为 True,除了输出之外,层还会返回最终的隐藏状态和最终的细胞状态。返回值为一个列表:[outputs, final_hidden_state, final_cell_state]。
outputs 的形状取决于 return_sequences 的值。
final_hidden_state 和 final_cell_state 的形状都是 (batch_size, units)。
默认值:False
。
stateful
含义:布尔值。
如果为 True,则 LSTM 层的内部状态(隐藏状态和细胞状态)在处理完一个批次后不会被重置。这意味着上一个批次处理结束时的最终状态将作为下一个批次处理的初始状态。这对于处理非常长的序列(被分割成多个批次)或实时流数据非常有用。
如果为 False (默认值),则每个批次处理开始时,内部状态都会被重置为零。
默认值:False。
dropout
含义:浮点数,介于 0 和 1 之间。表示在输入连接上应用的 dropout 比率。Dropout 是一种正则化技术,用于防止过拟合。
默认值:0.0 (不应用 dropout)。
recurrent_dropout
含义:浮点数,介于 0 和 1 之间。表示在循环连接上应用的 dropout 比率。
默认值:0.0 (不应用 dropout)。
use_bias
含义:布尔值。表示层是否应该使用偏置向量。
默认值:True。
kernel_initializer, recurrent_initializer, bias_initializer
含义:用于初始化权重矩阵(输入到隐藏层连接的权重)、循环权重矩阵(隐藏层到隐藏层连接的权重)和偏置向量的初始化策略。
默认值:'glorot_uniform' (对于 kernel_initializer),'orthogonal' (对于 recurrent_initializer),'zeros' (对于 bias_initializer)。
kernel_regularizer, recurrent_regularizer, bias_regularizer, activity_regularizer
含义:用于对权重矩阵、循环权重矩阵、偏置向量和层输出应用正则化函数,以防止过拟合。
默认值:None (不应用正则化)。
kernel_constraint, recurrent_constraint, bias_constraint
含义:用于对权重矩阵、循环权重矩阵和偏置向量应用约束函数,例如非负性或范数约束。
默认值:None (不应用约束)。
go_backwards
含义:布尔值。如果为 True,则按逆序处理输入序列并返回反向序列。
默认值:False。
unroll
含义:布尔值。如果为 True,则 LSTM 网络将被"展开"(unrolled),这可以加速某些小序列的训练,但会增加内存消耗。
默认值:False。
unit_forget_bias
含义:布尔值。如果为 True,在初始化时会给遗忘门的偏置项加 1。这有助于在训练开始时"记住"更多信息,因为它使得遗忘门更倾向于保持旧的细胞状态。
默认值:True。
conv
filters (必需)
含义:整数,表示卷积核的数量,也即输出空间的维度。每个卷积核都会对输入数据进行卷积操作,生成一个特征图。因此,filters 决定了输出特征图的深度或通道数。
默认值:无默认值,必须指定。
kernel_size (必需)
含义:整数或包含单个整数的元组/列表,指定一维卷积窗口的长度。 例如,kernel_size=3 表示卷积核的长度为 3。
默认值:无默认值,必须指定。
strides
含义:整数或包含单个整数的元组/列表,指定卷积的步长。 步长决定了卷积核在输入上滑动的距离。例如,strides=2 表示卷积核每次移动 2 个位置。
默认值:1。
注意:当 strides 大于 1 时,不能同时设置 dilation_rate 大于 1。
padding
含义:字符串,可以是 'valid'、'same' 或 'causal'。
'valid' (无填充):输出的长度会比输入短。
'same' (相同填充):通过在输入两端添加零填充,使得输出的长度与输入相同(当 strides=1 时)。
'causal' (因果填充):在输入左侧添加填充,确保输出在时间 t 不依赖于输入在时间 t+1 及以后的值。这对于处理时间序列数据非常有用,以避免未来信息泄露。
默认值:'valid'。
data_format
含义:字符串,可以是 'channels_last' (默认) 或 'channels_first'。 它定义了输入张量中维度的顺序。
'channels_last':输入形状为 (batch_size, steps, features)。
'channels_first':输入形状为 (batch_size, features, steps)。
默认值:'channels_last'。
dilation_rate
含义:整数或包含单个整数的元组/列表,指定用于扩张卷积的扩张率。 扩张卷积(或空洞卷积)通过在卷积核元素之间插入零来扩大其感受野,而无需增加参数数量。
默认值:1 (无扩张)。
注意:当 dilation_rate 大于 1 时,不能同时设置 strides 大于 1。
groups
含义:正整数,指定将输入沿通道轴拆分为的组数。每个组独立地与 filters / groups 个过滤器进行卷积。输出是所有组结果沿通道轴的串联。输入通道和过滤器都必须能被 groups 整除。
默认值:1。
activation
含义:要使用的激活函数。 如果未指定,则不应用激活函数。
默认值:None。
use_bias
含义:布尔值,表示层是否使用偏置向量。
默认值:True。
kernel_initializer, bias_initializer
含义:用于初始化卷积核(权重矩阵)和偏置向量的初始化策略。
默认值:'glorot_uniform' (对于 kernel_initializer),'zeros' (对于 bias_initializer)。
kernel_regularizer, bias_regularizer, activity_regularizer
含义:用于对卷积核、偏置向量和层输出应用正则化函数,以防止过拟合。
默认值:None (不应用正则化)。
kernel_constraint, bias_constraint
含义:用于对卷积核和偏置向量应用约束函数,例如非负性或范数约束。
默认值:None (不应用约束)。
从复杂度上来讲:dense < conv1D < LSTM
共性:
units:输出维度
正则话,约束,初始化策略,核心,偏移