keras常用层对比

从代码角度要想了解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:输出维度

正则话,约束,初始化策略,核心,偏移

相关推荐
宝贝儿好4 小时前
【LLM】第三章:项目实操案例:智能输入法项目
人工智能·python·深度学习·算法·机器人
ishangy5 小时前
皮带撕裂早期特征提取:AI摄像机+深度学习在港口的应用
人工智能·深度学习·智慧港口·港口皮带ai识别·皮带检测识别
kcuwu.5 小时前
深度学习技术完全指南
人工智能·深度学习
雷帝木木5 小时前
Python 类型提示与静态类型检查的高级应用
人工智能·python·深度学习·机器学习
雷帝木木5 小时前
Python 中的正则表达式:从基础到高级应用
人工智能·python·深度学习·机器学习
AI先驱体验官5 小时前
臻灵短剧平台 · 用户操作手册
大数据·人工智能·深度学习·重构·aigc
山科智能信息处理实验室6 小时前
告别“补点”时代:PaCo 用参数化补全重写多边形重建规则
深度学习·3d
断眉的派大星6 小时前
深度学习——迁移学习实战指南
人工智能·深度学习·迁移学习
DogDaoDao8 小时前
【GitHub】Ruflo:面向 Claude Code 的企业级多智能体编排平台深度解析
人工智能·深度学习·大模型·github·ai编程·claude·ruflo
zhonghaoxincekj9 小时前
轴距可调式元器件双边无损成形钳
经验分享·科技·深度学习·学习·测试工具·创业创新·制造