satellite_segmentation icon indicating copy to clipboard operation
satellite_segmentation copied to clipboard

在运行train.py文件时出错

Open Hanminghao opened this issue 4 years ago • 8 comments

出现了除零错误,在train()子函数中miou:metrics.get_miou() error:division by zero 希望作者可以解答,感谢!

Hanminghao avatar Jan 17 '21 10:01 Hanminghao

你好,请问这个问题你解决了吗?我在运行过程中也出现了同样的问题,谢谢!

出现了除零错误,在train()子函数中miou:metrics.get_miou() error:division by zero 希望作者可以解答,感谢!

GggggYyyyy000 avatar Feb 10 '21 11:02 GggggYyyyy000

你好,请问这个问题你解决了吗?我在运行过程中也出现了同样的问题,谢谢!

出现了除零错误,在train()子函数中miou:metrics.get_miou() error:division by zero 希望作者可以解答,感谢!

你的label的范围是怎样的。

HMS97 avatar Feb 11 '21 16:02 HMS97

你好,请问这个问题你解决了吗?我在运行过程中也出现了同样的问题,谢谢!

出现了除零错误,在train()子函数中miou:metrics.get_miou() error:division by zero 希望作者可以解答,感谢!

你的label的范围是怎样的。

非常抱歉,我是代码新手,不太清楚你指的 label 范围是什么。我训练所用数据集中的 label 是直接由你所提供的数据集经过 dataset_processing.py 处理得到的。 经过测试我发现如果将 epochs 数量调至1,代码可以正常运行,但只要将 epochs 数量调高便会在第二次训练结束后出现上述错误。 具体错误位置: loss 0.0 miou 0.19126011596785653 fg_iou 0.0 mcc inf 0%| | 0/2307 [00:00<?, ?it/s]Epoch: 2/4 100%|██████████| 2307/2307 [06:14<00:00, 6.15it/s] Traceback (most recent call last): File "D:/pythonscript/repositries/satellite_segmentation-master/train.py", line 204, in <module> main() File "D:/pythonscript/repositries/satellite_segmentation-master/train.py", line 174, in main train_hist = train(train_loader, num_classes, device, net, optimizer, criterion) File "D:/pythonscript/repositries/satellite_segmentation-master/train.py", line 124, in train "miou": metrics.get_miou(), File "D:\pythonscript\repositries\satellite_segmentation-master\utils\metrics.py", line 49, in get_miou return np.nanmean([self.tn / (self.tn + self.fn + self.fp), self.tp / (self.tp + self.fn + self.fp)]) ZeroDivisionError: division by zero

GggggYyyyy000 avatar Feb 16 '21 04:02 GggggYyyyy000

你好,请问这个问题你解决了吗?我在运行过程中也出现了同样的问题,谢谢!

出现了除零错误,在train()子函数中miou:metrics.get_miou() error:division by zero 希望作者可以解答,感谢!

你的label的范围是怎样的。

非常抱歉,我是代码新手,不太清楚你指的 label 范围是什么。我训练所用数据集中的 label 是直接由你所提供的数据集经过 dataset_processing.py 处理得到的。 经过测试我发现如果将 epochs 数量调至1,代码可以正常运行,但只要将 epochs 数量调高便会在第二次训练结束后出现上述错误。 具体错误位置: loss 0.0 miou 0.19126011596785653 fg_iou 0.0 mcc inf 0%| | 0/2307 [00:00<?, ?it/s]Epoch: 2/4 100%|██████████| 2307/2307 [06:14<00:00, 6.15it/s] Traceback (most recent call last): File "D:/pythonscript/repositries/satellite_segmentation-master/train.py", line 204, in <module> main() File "D:/pythonscript/repositries/satellite_segmentation-master/train.py", line 174, in main train_hist = train(train_loader, num_classes, device, net, optimizer, criterion) File "D:/pythonscript/repositries/satellite_segmentation-master/train.py", line 124, in train "miou": metrics.get_miou(), File "D:\pythonscript\repositries\satellite_segmentation-master\utils\metrics.py", line 49, in get_miou return np.nanmean([self.tn / (self.tn + self.fn + self.fp), self.tp / (self.tp + self.fn + self.fp)]) ZeroDivisionError: division by zero

你的label是0或者1还是0或者255

HMS97 avatar Feb 16 '21 05:02 HMS97

你好,请问这个问题你解决了吗?我在运行过程中也出现了同样的问题,谢谢!

出现了除零错误,在train()子函数中miou:metrics.get_miou() error:division by zero 希望作者可以解答,感谢!

你的label的范围是怎样的。

非常抱歉,我是代码新手,不太清楚你指的 label 范围是什么。我训练所用数据集中的 label 是直接由你所提供的数据集经过 dataset_processing.py 处理得到的。 经过测试我发现如果将 epochs 数量调至1,代码可以正常运行,但只要将 epochs 数量调高便会在第二次训练结束后出现上述错误。 具体错误位置: loss 0.0 miou 0.19126011596785653 fg_iou 0.0 mcc inf 0%| | 0/2307 [00:00<?, ?it/s]Epoch: 2/4 100%|██████████| 2307/2307 [06:14<00:00, 6.15it/s] Traceback (most recent call last): File "D:/pythonscript/repositries/satellite_segmentation-master/train.py", line 204, in <module> main() File "D:/pythonscript/repositries/satellite_segmentation-master/train.py", line 174, in main train_hist = train(train_loader, num_classes, device, net, optimizer, criterion) File "D:/pythonscript/repositries/satellite_segmentation-master/train.py", line 124, in train "miou": metrics.get_miou(), File "D:\pythonscript\repositries\satellite_segmentation-master\utils\metrics.py", line 49, in get_miou return np.nanmean([self.tn / (self.tn + self.fn + self.fp), self.tp / (self.tp + self.fn + self.fp)]) ZeroDivisionError: division by zero

你的label是0或者1还是0或者255

是0或者1

GggggYyyyy000 avatar Feb 16 '21 08:02 GggggYyyyy000

你好,请问这个问题你解决了吗?我在运行过程中也出现了同样的问题,谢谢!

出现了除零错误,在train()子函数中miou:metrics.get_miou() error:division by zero 希望作者可以解答,感谢!

你的label的范围是怎样的。

非常抱歉,我是代码新手,不太清楚你指的 label 范围是什么。我训练所用数据集中的 label 是直接由你所提供的数据集经过 dataset_processing.py 处理得到的。 经过测试我发现如果将 epochs 数量调至1,代码可以正常运行,但只要将 epochs 数量调高便会在第二次训练结束后出现上述错误。 具体错误位置: loss 0.0 miou 0.19126011596785653 fg_iou 0.0 mcc inf 0%| | 0/2307 [00:00<?, ?it/s]Epoch: 2/4 100%|██████████| 2307/2307 [06:14<00:00, 6.15it/s] Traceback (most recent call last): File "D:/pythonscript/repositries/satellite_segmentation-master/train.py", line 204, in <module> main() File "D:/pythonscript/repositries/satellite_segmentation-master/train.py", line 174, in main train_hist = train(train_loader, num_classes, device, net, optimizer, criterion) File "D:/pythonscript/repositries/satellite_segmentation-master/train.py", line 124, in train "miou": metrics.get_miou(), File "D:\pythonscript\repositries\satellite_segmentation-master\utils\metrics.py", line 49, in get_miou return np.nanmean([self.tn / (self.tn + self.fn + self.fp), self.tp / (self.tp + self.fn + self.fp)]) ZeroDivisionError: division by zero

你的label是0或者1还是0或者255

是0或者1

你可以将train.py 中的validtion part注释掉,然后直接train.py一下,看一下你的输入和example输入有什么区别,我这里刚才跑一下是可以正常训练的。

HMS97 avatar Feb 17 '21 10:02 HMS97

你好,请问这个问题你解决了吗?我在运行过程中也出现了同样的问题,谢谢!

出现了除零错误,在train()子函数中miou:metrics.get_miou() error:division by zero 希望作者可以解答,感谢!

你的label的范围是怎样的。

非常抱歉,我是代码新手,不太清楚你指的 label 范围是什么。我训练所用数据集中的 label 是直接由你所提供的数据集经过 dataset_processing.py 处理得到的。 经过测试我发现如果将 epochs 数量调至1,代码可以正常运行,但只要将 epochs 数量调高便会在第二次训练结束后出现上述错误。 具体错误位置: loss 0.0 miou 0.19126011596785653 fg_iou 0.0 mcc inf 0%| | 0/2307 [00:00<?, ?it/s]Epoch: 2/4 100%|██████████| 2307/2307 [06:14<00:00, 6.15it/s] Traceback (most recent call last): File "D:/pythonscript/repositries/satellite_segmentation-master/train.py", line 204, in <module> main() File "D:/pythonscript/repositries/satellite_segmentation-master/train.py", line 174, in main train_hist = train(train_loader, num_classes, device, net, optimizer, criterion) File "D:/pythonscript/repositries/satellite_segmentation-master/train.py", line 124, in train "miou": metrics.get_miou(), File "D:\pythonscript\repositries\satellite_segmentation-master\utils\metrics.py", line 49, in get_miou return np.nanmean([self.tn / (self.tn + self.fn + self.fp), self.tp / (self.tp + self.fn + self.fp)]) ZeroDivisionError: division by zero

你的label是0或者1还是0或者255

是0或者1

你可以将train.py 中的validtion part注释掉,然后直接train.py一下,看一下你的输入和example输入有什么区别,我这里刚才跑一下是可以正常训练的。

非常感谢!我将 validation 注释掉后成功运行,我判断是数据集存在问题导致 miou 数值异常。

GggggYyyyy000 avatar Feb 18 '21 13:02 GggggYyyyy000

请问你训练时mask是什么样的呢?读取labels中的图片后经过ToTensor()处理的数值很小,然后转换为长整型(.long()),mask变为全0了,导致出现除数为0的情况。

yueyunqingwu avatar Dec 30 '21 07:12 yueyunqingwu