You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TensorFlow时间序列窗口中从特征数据移除标签数据

修改TensorFlow WindowGenerator的split_window函数分离特征与标签

针对你需要从特征数据中移除标签列的需求,直接修改WindowGenerator类中的split_window方法即可,核心是对特征张量的列维度进行切片,把最后一列单独作为标签,其余列作为输入特征。

修改后的split_window函数

def split_window(self, features):
    # 输入特征:取所有样本、输入窗口时间步、除最后一列外的所有特征列
    inputs = features[:, :-self.label_width, :-1]
    # 预测标签:取所有样本、标签窗口时间步、仅最后一列作为标签
    labels = features[:, -self.label_width:, -1:]
    
    # 维持TensorFlow对张量形状的约束,避免后续训练报错
    inputs.set_shape([None, self.input_width, None])
    labels.set_shape([None, self.label_width, None])
    
    return inputs, labels

代码说明

  • 特征切片逻辑:[:, :-self.label_width, :-1]
    三个维度分别对应:样本批量、输入窗口的时间步(剔除标签对应的时间步)、所有特征列(排除最后一列标签列)
  • 标签切片逻辑:[:, -self.label_width:, -1:]
    三个维度分别对应:样本批量、标签窗口的时间步(比如单步预测就是最后1个时间步)、仅保留最后一列作为标签
  • 形状约束:保留set_shape调用是为了让TensorFlow明确张量的维度信息,避免模型编译或训练时出现形状不匹配的问题

测试验证

假设你的输入特征张量形状为(32, 11, 4)(32个样本、10个输入时间步+1个标签时间步、4个数据列),修改后:

  • 输入特征inputs的形状为(32, 10, 3),对应前3列特征数据
  • 标签labels的形状为(32, 1, 1),对应第4列标签数据

内容的提问来源于stack exchange,提问作者Abdelrahman Hamdy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 20:05:42