Python 如何将Keras数据生成器(或其他方法)用于多个不同长度的.npy文件?
我正在处理30000个.npy文件的数据集。 每个文件包含以下形式的矩阵: (75,N),其中75是列数,表示特征数。 N:行数,这些特性随时间变化的值,并且在不同的文件中有所不同 我尝试使用keras文档中提到的TimeseriesGenerator:Python 如何将Keras数据生成器(或其他方法)用于多个不同长度的.npy文件?,python,keras,deep-learning,Python,Keras,Deep Learning,我正在处理30000个.npy文件的数据集。 每个文件包含以下形式的矩阵: (75,N),其中75是列数,表示特征数。 N:行数,这些特性随时间变化的值,并且在不同的文件中有所不同 我尝试使用keras文档中提到的TimeseriesGenerator: 如何将此方法用于多个npy文件 每个文件必须由目标数组或每列中的类匹配吗 我通过创建自定义序列解决了这个问题。自定义序列连接不同的序列。这样,当某个时间序列结束时,将给出一个较小的批次,然后继续到下一个序列 from keras.utils i
我通过创建自定义序列解决了这个问题。自定义序列连接不同的序列。这样,当某个时间序列结束时,将给出一个较小的批次,然后继续到下一个序列
from keras.utils import Sequence
class ConcatGenerator(Sequence):
# series is a list of timeseires generators
def __init__(self, series, *args, **kwargs):
super(*args, **kwargs)
self.series = series
def __len__(self):
return sum([len(s) for s in self.series])
def __getitem__(self, idx):
cur = 0
while idx >= len(self.series[cur]):
idx -= len(self.series[cur])
cur += 1
return self.series[cur][idx]
请注意,这是玩具代码,您可以使获取项目更有效
因此,在您的例子中,您将从每个npy文件创建一个时间序列生成器,然后使用它们创建一个ConcatGenerator
from keras.utils import Sequence
class ConcatGenerator(Sequence):
# series is a list of timeseires generators
def __init__(self, series, *args, **kwargs):
super(*args, **kwargs)
self.series = series
def __len__(self):
return sum([len(s) for s in self.series])
def __getitem__(self, idx):
cur = 0
while idx >= len(self.series[cur]):
idx -= len(self.series[cur])
cur += 1
return self.series[cur][idx]