ネットワークをトレーニングするために時系列データセットを読み込む必要があります。生データからこれらのファイルを抽出するときのメモリの問題のため、データセットは多くのチャンク、、、、(41 チャンク)にtrain_x_0.npy
分割されました。ただし、サイズが大きすぎて (約 1000 GB)、すべてを RAM にロードできませんでした。この問題を解決するために、私は2つの方法を考えてきました。train_x_1.npy
train_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
、ご意見をお聞かせください。