我正在处理30,000个.npy文件的数据集。 每个文件都包含以下格式的矩阵: (75,N),其中75是列数,代表要素数。 N:行数,这些功能的值随着时间的推移而变化,并且与文件不同。
我尝试使用keras文档here中提到的TimeseriesGenerator:
data_gen = TimeseriesGenerator(data, targets,
length=10, sampling_rate=2,
batch_size=2)
答案 0 :(得分:0)
我通过创建自定义序列解决了这个问题。自定义序列连接不同的序列。这样,当某个时间序列结束时,将给出较小的批次,而不是继续进行下一个序列。
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。