### LSTM序列长度(Sequence Length or Time Steps)
在LSTM模型中,**序列长度**或**时间步**(`time steps`)是指输入数据的一个样本中包含多少个时间点的数据。比如,在你的案例中,如果`time_steps`为90,表示模型在做预测时,每次都会参考前90个时间点的数据。
- **LSTM序列长度** 是一个定义在模型输入层的参数,它决定了模型在每次预测时要参考的时间步数。这个值是在你构建模型时通过 `input_shape=(time_steps, n_features)` 来设定的。这个 `time_steps` 代表每个样本有多少时间点的数据。
### LSTM批次大小(Batch Size)
**批次大小**(`batch_size`)是指在训练过程中,模型在每次梯度更新时处理的样本数量。它与 `time_steps` 是不同的概念。
- `batch_size` 是在训练时定义的,用于控制每次模型计算梯度时处理多少个样本。这在 `model.fit()` 中指定。
### 你当前代码中的设定
- 你的 `time_steps` 是单独设置的,用于定义每个样本中包含多少个时间点的数据。
- `batch_size` 用于定义每次训练迭代中处理多少个样本。
### 理解的关键
- **时间步长(time steps/sequence length)**: 这是你输入模型的每个样本的“长度”,即模型每次要参考多少时间点的数据。
- **批次大小(batch size)**: 这是训练过程中每次使用的样本数量,通常与时间步长无关。
### 举例说明
假设你有一个 `X_train`,其形状为 `(1000, 5)`,即1000个时间点的数据,每个时间点有5个特征。
- 如果你设定 `time_steps = 90`,那么你会将数据重新格式化为 `(number_of_samples, 90, 5)` 的形状,其中 `number_of_samples` 是 `(1000 - 90 + 1)`。
- 假设 `batch_size = 32`,那么在每次训练时,模型会处理32个样本,每个样本的形状是 `(90, 5)`。
### 预测时的时间步长
预测时,你可能也会有一个类似 `time_steps` 的参数,用来决定模型在预测时使用多少过去的时间点数据。这个参数与训练时使用的时间步长应该保持一致,但你也可以为预测单独设置一个时间步长参数。
### 关键点
1. **LSTM序列长度** 和 **训练/预测数据的时间步** 是用来定义每个样本中的时间点数量的。
2. **批次大小** 是训练时每次处理的样本数量。
3. 建议单独设置训练和预测的时间步参数,以便在不同的场景下灵活调整。