lufficc / SSD

High quality, fast, modular reference implementation of SSD in PyTorch
MIT License
1.51k stars 385 forks source link

RuntimeError: cannot perform reduction function max on tensor with no elements because the operation does not have an identity #178

Open A154609 opened 3 years ago

A154609 commented 3 years ago

n main() File "train.py", line 105, in main model = train(cfg, args) File "train.py", line 44, in train model = do_train(cfg, model, train_loader, optimizer, scheduler, checkpointer, device, arguments, args) File "E:\A开源代码\SSD-master1\SSD-master\ssd\engine\trainer.py", line 76, in dotrain for iteration, (images, targets, ) in enumerate(data_loader, start_iter): File "D:\Anaconda3\envs\pytorch\lib\site-packages\torch\utils\data\dataloader.py", line 363, in next data = self._next_data() File "D:\Anaconda3\envs\pytorch\lib\site-packages\torch\utils\data\dataloader.py", line 989, in _next_data return self._process_data(data) File "D:\Anaconda3\envs\pytorch\lib\site-packages\torch\utils\data\dataloader.py", line 1014, in _process_data data.reraise() File "D:\Anaconda3\envs\pytorch\lib\site-packages\torch_utils.py", line 395, in reraise raise self.exc_type(msg) RuntimeError: Caught RuntimeError in DataLoader worker process 2. Original Traceback (most recent call last): File "D:\Anaconda3\envs\pytorch\lib\site-packages\torch\utils\data_utils\worker.py", line 185, in _worker_loop data = fetcher.fetch(index) File "D:\Anaconda3\envs\pytorch\lib\site-packages\torch\utils\data_utils\fetch.py", line 44, in fetch data = [self.dataset[idx] for idx in possibly_batched_index] File "D:\Anaconda3\envs\pytorch\lib\site-packages\torch\utils\data_utils\fetch.py", line 44, in data = [self.dataset[idx] for idx in possibly_batched_index] File "E:\A开源代码\SSD-master1\SSD-master\ssd\data\datasets\voc.py", line 42, in getitem boxes, labels = self.target_transform(boxes, labels) File "E:\A开源代码\SSD-master1\SSD-master\ssd\data\transforms\target_transform.py", line 20, in call boxes, labels = box_utils.assign_priors(gt_boxes, gt_labels, self.corner_form_priors, self.iou_threshold) File "E:\A开源代码\SSD-master1\SSD-master\ssd\utils\box_utils.py", line 93, in assign_priors best_target_per_prior, best_target_per_prior_index = ious.max(1) RuntimeError: cannot perform reduction function max on tensor with no elements because the operation does not have an identity

(pytorch) E:\A开源代码\SSD-master1\SSD-master>

xhpk commented 3 years ago

n main() File "train.py", line 105, in main model = train(cfg, args) File "train.py", line 44, in train model = do_train(cfg, model, train_loader, optimizer, scheduler, checkpointer, device, arguments, args) File "E:\A开源代码\SSD-master1\SSD-master\ssd\engine\trainer.py", line 76, in dotrain for iteration, (images, targets, ) in enumerate(data_loader, start_iter): File "D:\Anaconda3\envs\pytorch\lib\site-packages\torch\utils\data\dataloader.py", line 363, in next data = self._next_data() File "D:\Anaconda3\envs\pytorch\lib\site-packages\torch\utils\data\dataloader.py", line 989, in _next_data return self._process_data(data) File "D:\Anaconda3\envs\pytorch\lib\site-packages\torch\utils\data\dataloader.py", line 1014, in _process_data data.reraise() File "D:\Anaconda3\envs\pytorch\lib\site-packages\torch_utils.py", line 395, in reraise raise self.exc_type(msg) RuntimeError: Caught RuntimeError in DataLoader worker process 2. Original Traceback (most recent call last): File "D:\Anaconda3\envs\pytorch\lib\site-packages\torch\utils\data_utils\worker.py", line 185, in _worker_loop data = fetcher.fetch(index) File "D:\Anaconda3\envs\pytorch\lib\site-packages\torch\utils\data_utils\fetch.py", line 44, in fetch data = [self.dataset[idx] for idx in possibly_batched_index] File "D:\Anaconda3\envs\pytorch\lib\site-packages\torch\utils\data_utils\fetch.py", line 44, in data = [self.dataset[idx] for idx in possibly_batched_index] File "E:\A开源代码\SSD-master1\SSD-master\ssd\data\datasets\voc.py", line 42, in getitem boxes, labels = self.target_transform(boxes, labels) File "E:\A开源代码\SSD-master1\SSD-master\ssd\data\transforms\target_transform.py", line 20, in call boxes, labels = box_utils.assign_priors(gt_boxes, gt_labels, self.corner_form_priors, self.iou_threshold) File "E:\A开源代码\SSD-master1\SSD-master\ssd\utils\box_utils.py", line 93, in assign_priors best_target_per_prior, best_target_per_prior_index = ious.max(1) RuntimeError: cannot perform reduction function max on tensor with no elements because the operation does not have an identity

(pytorch) E:\A开源代码\SSD-master1\SSD-master>

这个问题可能和你的label缺失有关

A154609 commented 3 years ago

n main() 在主 模型中的文件“ train.py”,第105行=火车(cfg,args) 在火车 模型中的文件“ train.py”,第44行,在火车模型= do_train(cfg,模型,train_loader,优化器,调度程序,检查 指针,设备,参数,参数)文件“ E:\ A开源代码\ SSD-master1 \ SSD-master \ ssd \ engine \ trainer.py”,行76,在dotrain中 进行迭代((图像,目标,))枚举(data_loader,start_iter): 文件“ D:\ Anaconda3 \ envs \ pytorch \ lib \ site-packages \ torch \ utils \ data \ dataloader.py”,第363行,下一个 数据= self._next_data() 文件“ D :_Anaconda3 \ envs \ pytorch \ lib \ site-packages \ torch \ utils \ data \ dataloader.py“,行_next_data中的 返回self._process_data(data) _process_data data.reraise() 文件中的文件“ D:\ Anaconda3 \ envs \ pytorch \ lib \ site-packages \ torch \ utils \ data \ dataloader.py”,行(14 )文件“ D:\ Anaconda3 \ envs \ pytorch \ lib \ site-packages \ torch_utils.py“,行395,重新 引发self.exc_type(msg) RuntimeError:在DataLoader工作进程2中捕获RuntimeError。 原始回溯(最近一次调用): 文件” D:\ Anaconda3 \ envs \ pytorch \ lib \ site-packages \ torch \ utils \ data_utils \ worker.py“,第185行,在_worker_loop中 data = fetcher.fetch(index) 文件” D:\ Anaconda3 \ envs \ pytorch \ lib \ site-packages \ torch \ utils \ data_utils \ fetch.py​​“,第44行,在fetch data = [self.dataset [idx]中,可能是_batched_index中的idx] 文件“ D:\ Anaconda3 \ envs \ pytorch \ lib \ site-packages \ torch \ utils \ data_utils \ fetch.py​​”,第44行, 数据= [self.dataset [idx],可能用于_batched_index中的idx], 文件“ E: \ A开源代码\ SSD-master1 \ SSD-master \ ssd \ data \ datasets \ voc.py”,第42行,在getitem 框中,标签= self.target_transform(框,标签), 文件“ E:\ A开源代码\ SSD-master1 \ SSD-master \ ssd \ data \ transforms \ target_transform.py“,第20行,在呼叫 框中,标签= box_utils.assign_priors(gt_boxes,gt_labels,self.corner_form_priors,self.iou_threshold) 文件” E:\ A开源代码\ SSD-master1 \ SSD-master \ ssd \ utils \ box_utils.py”,第93行,位于assign_priors best_target_per_prior,best_target_per_prior_index = ious.max(1)中 RuntimeError:无法在没有元素的张量上执行最大归约函数,因为该操作没有身份 (pytorch)E:\ A开源代码\ SSD-master1 \ SSD-master>

这个问题可能和你的标签缺失有关

我把报错的标注文件输出后,组成了一个小的训练集是可以实现训练,请问有什么办法可以检查错误的地方吗

sunmooncode commented 3 years ago

请问问题解决了吗!