【模型训练】出现TypeError: unsupported operand type(s) for /: ‘NoneType‘ and ‘float‘
在训练深度学习模型的过程中,出现报错:TypeError: unsupported operand type(s) for /: ‘NoneType’ and ‘float’。
·
在训练深度学习模型的过程中,出现报错:TypeError: unsupported operand type(s) for /: ‘NoneType’ and ‘float’。
报错如下:
libpng error: Read Error
Traceback (most recent call last):
File "/gemini/code/XLSR-main/train.py", line 128, in <module>
File "/gemini/code/XLSR-main/train.py", line 27, in train
File "/usr/local/lib/python3.8/dist-packages/torch/utils/data/dataloader.py", line 521, in __next__
data = self._next_data()
File "/usr/local/lib/python3.8/dist-packages/torch/utils/data/dataloader.py", line 1203, in _next_data
return self._process_data(data)
File "/usr/local/lib/python3.8/dist-packages/torch/utils/data/dataloader.py", line 1229, in _process_data
data.reraise()
File "/usr/local/lib/python3.8/dist-packages/torch/_utils.py", line 425, in reraise
raise self.exc_type(msg)
TypeError: Caught TypeError in DataLoader worker process 0.
Original Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/torch/utils/data/_utils/worker.py", line 287, in _worker_loop
data = fetcher.fetch(index)
File "/usr/local/lib/python3.8/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.8/dist-packages/torch/utils/data/_utils/fetch.py", line 44, in <listcomp>
data = [self.dataset[idx] for idx in possibly_batched_index]
File "/gemini/code/XLSR-main/dataset.py", line 75, in __getitem__
TypeError: unsupported operand type(s) for /: 'NoneType' and 'float'
关键就在TypeError: unsupported operand type(s) for /: 'NoneType' and 'float'
这里,读取图片错误,所以出现NoneType
。
做如下改进即可:
改进前:
path_LR = os.path.join(self.LR_dir, self.img_names[index][:-4] + 'x' + str(self.SR_rate) + '.png')
LR_img = cv2.imread(path_LR)
LR_img = LR_img / 255.
改进后:
path_LR = os.path.join(self.LR_dir, self.img_names[index][:-4] + 'x' + str(self.SR_rate) + '.png')
while True:
try:
LR_img = cv2.imread(path_LR)
LR_img = LR_img / 255.
except Exception as e:
print("=====================LR_img read image error=======================")
print(e)
print("index:", index)
print("===================================================================")
else:
break
实际就是图片读取失败后再读取,直至成功为止,通常读取第二遍时就会成功。
更多推荐
已为社区贡献1条内容
所有评论(0)