RuntimeError: Assertion `cur_target >= 0 && cur_target < n_classes' failed. at c:\programdata\miniconda3\conda-bld\pytorch-cpu_1532498166916\work\aten\src\thnn\generic/ClassNLLCriterion.c:93
断言函数报错,要求目标类大于等于0并且小于等于输入的类别,但是不满足。
在分类训练中经常遇到这个问题,一般来说在我们网络中输出的种类数和你label设置的种类数量不同的时候就会出现这个错误。
在matlab进行实验分类时使用find去除了背景类0,所以所有的类别从1开始,在matlab进行分类的时候没问题但是Pytorch有个要求,在使用CrossEntropyLoss这个函数进行验证时label必须是以0开始的,所以会报错 ← 在 处 理 完 背 景 类 之 后 将 所 有 的 类 别 标 签 减 1 \leftarrow在处理完背景类之后将所有的类别标签减1 ←在处理完背景类之后将所有的类别标签减1