現在、PyTorch の DataLoader を使用してデータを処理し、深層学習モデルにフィードしようとしていますが、いくつかの問題に直面しています。
必要なデータは形(minibatch_size=32, rows=100, columns=41)
です。私が書いたカスタム クラス内の__getitem__
コードDataset
は次のようになります。
def __getitem__(self, idx):
x = np.array(self.train.iloc[idx:100, :])
return x
このように記述した理由は、DataLoader で形状の入力インスタンスを一度に処理する必要(100, 41)
があり、これらの単一インスタンスが 32 個あるためです。
ただし、当初の考えに反してidx
、DataLoader が関数に渡す引数がシーケンシャルではないことに気付きました (データが時系列データであるため、これは重要です)。たとえば、値を出力すると、次のようになります。
idx = 206000
idx = 113814
idx = 80597
idx = 3836
idx = 156187
idx = 54990
idx = 8694
idx = 190555
idx = 84418
idx = 161773
idx = 177725
idx = 178351
idx = 89217
idx = 11048
idx = 135994
idx = 15067
これは正常な動作ですか?返されたデータ バッチが最初に望んでいたものではないため、この質問を投稿しています。
DataLoader を使用する前にデータを前処理するために使用した元のロジックは次のとおりです。
txt
またはcsv
ファイルからデータを読み込みます。- データに含まれるバッチの数を計算し、それに応じてデータをスライスします。たとえば、1 つの入力インスタンスが形状
(100, 41)
であり、これらの 32 が 1 つのミニバッチを形成するため、通常は約 100 程度のバッチになり、それに応じてデータを再形成します。 - 1 つの入力は shape
(32, 100, 41)
です。
DataLoader フック メソッドを他にどのように処理すればよいかわかりません。ヒントやアドバイスは大歓迎です。前もって感謝します。