ネットワークをトレーニングするために時系列データセットを読み込む必要があります。生データからこれらのファイルを抽出するときのメモリの問題のため、データセットは多くのチャンク、、、、(41 チャンク)にtrain_x_0.npy分割されました。ただし、サイズが大きすぎて (約 1000 GB)、すべてを RAM にロードできませんでした。この問題を解決するために、私は2つの方法を考えてきました。train_x_1.npytrain_x_40.npy.npy
np.load()with argumentを使用してデータ チャンクをロードしますmmap_mode='r+'。メモリ マップされたチャンクは Python list に格納されますself.data。__getitem__(self, idx)PytorchクラスのメソッドではDataset、 と に変換idxしchunk_idx、sample_idxでサンプルを取得しますself.data[chunk_idx][sample_idx]。- 生データからファイルを再度抽出
.npyし、データをサンプルごとに保存します。つまり、1 つの.npyファイルが 1 つのサンプルであり、データ チャンクではありません。メソッドでは__getitem__(self, idx)、 を使用してロードすることで 1 つのサンプルを取得しnp.load(sample_path)ます。
PytorchDataLoaderを使用してすべてのサンプルを反復処理すると仮定すると、どの方法がより高速になりますか?
生データの抽出またはファイルのロードに関する別の提案がある場合は.npy、ご意見をお聞かせください。