📅  最后修改于: 2023-12-03 14:47:55.289000             🧑  作者: Mango
tf.layers.lstm()
函数是 TensorFlow.js 中用来创建长短时记忆网络 (Long Short-Term Memory, LSTM) 模型的函数之一,它采用了 Keras 中的 LSTM 层实现。LSTM 是一类特殊的循环神经网络 (Recurrent Neural Network, RNN),主要用于处理序列数据(如语音、文本、时间序列数据等),能够有效地建模长期依赖关系。
tf.layers.lstm(config)
config
是一个对象,包含了 LSTM 层的各种配置参数,如下所示:
units
:正整数,表示 LSTM 层的输出维度大小(也称为“隐藏层大小”)。kernelInitializer
:权重矩阵的初始化方法,默认为 glorotUniform
。recurrentInitializer
:循环权重矩阵的初始化方法,默认为 orthogonal
。biasInitializer
:偏置向量的初始化方法,默认为 zeros
。unitForgetBias
:若为 true,则在遗忘门的偏置向量 b_f 上加上 1,可以加速 LSTM 的收敛速度。默认为 false。activation
:用于输出的激活函数,默认为 tanh
。recurrentActivation
:用于循环的激活函数,默认为 hardSigmoid
。useBias
:是否使用偏置向量,默认为 true。kernelRegularizer
:权重矩阵的正则化方法,默认为 null。recurrentRegularizer
:循环权重矩阵的正则化方法,默认为 null。biasRegularizer
:偏置向量的正则化方法,默认为 null。dropout
:一个浮点数,表示在输入数据的 Dropout 比率。注意,此处指的是抑制序列上每个 LSTM 单元之间的信号。默认为 0。recurrentDropout
:一个浮点数,表示在状态数据的 Dropout 比率。注意,此处指的是抑制序列上每个 LSTM 单元自身的信号。默认为 0。implementation
:实现方式,支持 '1'
和 '2'
两种实现方式,默认为 '2'
。实现方式 '1'
使用更多的时间和空间,但可以处理更长的序列。实现方式 '2'
耗时少,但只能处理较短的序列。一个 LSTM 层对象。
下面是一个使用 tf.layers.lstm()
函数创建一个简单 LSTM 模型的示例:
const lstmLayer = tf.layers.lstm({
units: 32,
inputShape: [10, 8],
returnSequences: true,
});
const input = tf.input({ shape: [10, 8] });
const output = lstmLayer.apply(input);
const model = tf.model({ inputs: input, outputs: output });
model.summary();
这个示例中,我们创建了一个具有 32 个隐藏层节点的 LSTM 层对象。输入数据的形状为 (batchSize, timeSteps, inputDim)
,其中 batchSize 表示输入数据的样本数量,timeSteps 表示在序列上滑动 LSTM 窗口的长度,inputDim 表示输入数据的维度。在上面的示例中,我们设置了输入数据的形状为 [10, 8]
,表示在 batch 为 10,timeSteps 为 8,inputDim 为 1 的情况下使用 LSTM 模型进行训练。同时,我们还指定了 returnSequences
参数为 true,表示输出的是每个时刻的 LSTM 单元状态,而不是只输出最终状态。
然后我们创建了一个 tf.model()
对象,设置输入为 input
,输出为 output
,即使用 LSTM 模型进行序列预测。
最后调用 model.summary()
方法,打印模型的详细信息,如下所示:
_________________________________________________________________
Layer (type) Output shape Param #
=================================================================
input_1 (InputLayer) [(null, 10, 8)] 0
_________________________________________________________________
lstm (LSTM) (null, 10, 32) 5248
=================================================================
Total params: 5,248
Trainable params: 5,248
Non-trainable params: 0
_________________________________________________________________
我们可以看到,该模型中 LSTM 层的输出形状为 (batchSize, timeSteps, units)
,即 (10, 8, 32)
,LSTM 层总共有 5,248 个训练参数可供优化。