私は配列x_train
とtargets_train
を持っています。トレーニングデータをシャッフルしてより小さなバッチに分割し、バッチをトレーニングデータとして使用したいと思います。言って、私はエラーを取得する私は、トレーニングデータをシャッフルするときIndexError:サイズが0の軸のインデックスが範囲外です
x_train = np.memmap('/home/usr/train', dtype='float32', mode='r', shape=(1000, 1, 784))
# print(x_train)
targets_train = np.memmap('/home/usr/train_label', dtype='int32', mode='r', shape=(1000, 1))
train_idxs = [i for i in range(x_train.shape[0])]
np.random.shuffle(train_idxs)
num_batches_train = 4
def next_batch(start, train, labels, batch_size=250):
newstart = start + batch_size
if newstart > train.shape[0]:
newstart = 0
idxs = train_idxs[start:start + batch_size]
# print(idxs)
return train[idxs, :], labels[idxs, :], newstart
# x_train_lab = x_train[:200]
# # x_train = np.array(targets_train)
# targets_train_lab = targets_train[:200]
for i in range(num_batches_train):
x_train, targets_train, newstart = next_batch(i*batch_size, x_train, targets_train, batch_size=250)
問題は、あるバッチにアクセスしよう:
return train[idxs, :], labels[idxs, :], newstart
IndexError: index 250 is out of bounds for axis 0 with size 250
を私の元のデータが1000行を持っていると私はそれらの250行を使用しようとするたびに
私は何が間違っているのか知っている人はいますか?
サイズが250の場合、最後のインデックスはおそらく249です。0から開始します。 –
シャッフルしないと最初のバッチインデックスは0から249まで、次のインデックスは250から499までとなります..もし私がインデックスをシャッフルすれば、最初のバッチはインデックス番号619を持つかもしれません!私はエラー "IndexError:インデックス652は、サイズが250の軸0の範囲外です " ...私は問題を意味していますそれは行を受け入れ、インデックスをリセットすることを理解していない! – ga97rasl
関数に渡す変数 'x_train'と' targets_train'に内容がありますか?私は印刷し、確かに1000シャッフルされた行があることを確認します。 – kmario23