我正在使用 tqdm 迭代我的 val_loader。但是,它返回以下错误:
Traceback (most recent call last):
File "Develop_Model_2.py", line 261, in <module>
None)
File "Develop_Model_2.py", line 217, in training_loop
for X, y in pbar:
File "/usr/local/lib/python3.6/dist-packages/tqdm/std.py", line 1178, in __iter__
for obj in iterable:
File "/usr/local/lib/python3.6/dist-packages/torch/utils/data/dataloader.py", line 517, in __next__
data = self._next_data()
File "/usr/local/lib/python3.6/dist-packages/torch/utils/data/dataloader.py", line 557, in _next_data
data = self._dataset_fetcher.fetch(index) # may raise StopIteration
File "/usr/local/lib/python3.6/dist-packages/torch/utils/data/_utils/fetch.py", line 44, in fetch
data = [self.dataset[idx] for idx in possibly_batched_index]
File "/usr/local/lib/python3.6/dist-packages/torch/utils/data/_utils/fetch.py", line 44, in <listcomp>
data = [self.dataset[idx] for idx in possibly_batched_index]
File "/usr/local/lib/python3.6/dist-packages/torch/utils/data/dataset.py", line 330, in __getitem__
return self.dataset[self.indices[idx]]
File "Develop_Model_2.py", line 72, in __getitem__
yimg = Image.open(self.maskList[index]).convert('L')
IndexError: list index out of range
有没有人知道为什么会发生这种情况,因为我无法从我的代码中弄清楚。似乎问题是来自 tqdm 的最终迭代超出了界限。
pbar = tqdm(val_loader, total = len(val_loader))
for X, y in pbar:
torch.cuda.empty_cache()
X = X.to(device).float()
y = y.to(device).float()
model.eval()
ypred = model(X)
val_loss_arr.append(loss_fn(ypred, y).item())
pixelacctest.append(pixelAcc(y, ypred))
meanioutest.append(meanIOU(y, ypred))
pbar.set_postfix({'Epoch':epoch+1+prevEpoch,
'Validation Loss': np.mean(val_loss_arr),
'Mean IOU': np.mean(meanioutest),
'Pixel Acc': np.mean(pixelacctest)
})