Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将Keras数据生成器(或其他方法)用于多个不同长度的.npy文件?_Python_Keras_Deep Learning - Fatal编程技术网

Python 如何将Keras数据生成器(或其他方法)用于多个不同长度的.npy文件?

Python 如何将Keras数据生成器(或其他方法)用于多个不同长度的.npy文件?,python,keras,deep-learning,Python,Keras,Deep Learning,我正在处理30000个.npy文件的数据集。 每个文件包含以下形式的矩阵: (75,N),其中75是列数,表示特征数。 N:行数,这些特性随时间变化的值,并且在不同的文件中有所不同 我尝试使用keras文档中提到的TimeseriesGenerator: 如何将此方法用于多个npy文件 每个文件必须由目标数组或每列中的类匹配吗 我通过创建自定义序列解决了这个问题。自定义序列连接不同的序列。这样,当某个时间序列结束时,将给出一个较小的批次,然后继续到下一个序列 from keras.utils i

我正在处理30000个.npy文件的数据集。 每个文件包含以下形式的矩阵: (75,N),其中75是列数,表示特征数。 N:行数,这些特性随时间变化的值,并且在不同的文件中有所不同

我尝试使用keras文档中提到的TimeseriesGenerator:

  • 如何将此方法用于多个npy文件
  • 每个文件必须由目标数组或每列中的类匹配吗

  • 我通过创建自定义序列解决了这个问题。自定义序列连接不同的序列。这样,当某个时间序列结束时,将给出一个较小的批次,然后继续到下一个序列

    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]