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

如何用TensorFlow tf.data构建多变量时序LSTM输入数据管道?

本人刚接触TensorFlow和编程,若问题浅显或已有解答但未理解,敬请谅解。

核心问题

无法将100个含13列、长度为num_timesteps的CSV(每个对应一条训练/测试序列)转换为LSTM所需的输入维度(100, num_timesteps, 13),每个CSV的标签由其所在文件夹结构提供。

项目背景

正在进行多变量时间序列分类项目,训练数据为约100个存储为CSV(计划转为pickles)的pandas dataframe,包含13个特征/时间序列。每个dataframe内的列/时间序列长度一致,但不同dataframe长度各异。由于LSTM支持不同长度的时序数据分批次训练,希望先尝试保留原始长度,若效果不佳再补零。CSV按5个标签分类存储在不同文件夹中。

目标

主要使用tf.data函数构建数据管道,直接将数据读取为TensorFlow Dataset,后续在此基础上完成划分训练测试集、归一化等操作;或寻求更优雅的多变量时序数据处理方式,通过文件夹路径自动标注数据。当前使用3维np.array无法在不补零的情况下读取不同长度的数据。

当前困境

现有资源多介绍如何将单个dataframe转换为tf.data Dataset(每行对应一个训练样本),但本人需读取多个dataframe,且每个dataframe的行需作为关联序列处理。期望创建维度为[num_of_different_dfs, len_of_df(=None), num_of_features(13)]的Dataset,目前仅能通过视频将标签转为tf dataset,无法处理数据部分。

当前数据读取方式

手动编写函数找到最短时序(8个样本),按该长度读取每个标签下的所有CSV并拼接为dataframe,生成对应标签向量;将5个dataframe拼接为2维np.array(8*100,13),再转为3维数组(100,8,13),测试数据单独处理未做划分;用sklearn的MinMax-Scaler对数据归一化。该方法浪费数据,不适用于不同长度的多变量时序数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 21:26:03