这次的问题在之前几篇有意无意的提起过,但因为当时没有很好的解决办法,所以这块就没有展开去说,问题是什么呢?在用配置文件noise.yaml、content.yaml、unrelated.yaml、frontier_stitching.yaml来进行训练模型加水印时报错RuntimeError: "nll_loss_forward_reduce_cuda_kernel_2d_index" not implemented for 'Float',这个在网上并没有找到解决办法,有的也只是RuntimeError: "nll_loss_forward_reduce_cuda_kernel_2d_index" not implemented for 'int',也就是说之前因为int类型不兼容出了问题,那这个float报错的原因是什么呢?
原因分析及解决
仔细分析会发现,在RuntimeError: "nll_loss_forward_reduce_cuda_kernel_2d_index" not implemented for 'int'的解决办法中提到的是应该输入float或者double而不是int,所以在输入int的时候会出现这个问题,但是呢我这里边输入的就是float啊,为什么会报这种错误呢?这个原因想了很久我都没有想明白。经过各种打印输出也很能确定的是:我的输入类型就是float:
那就奇了怪了,他需要的是float,我输入的也是float,但是却一直报错RuntimeError: "nll_loss_forward_reduce_cuda_kernel_2d_index" not implemented for 'Float'。
【已解决】RuntimeError: “nll_loss_forward_reduce_cuda_kernel_2d_index“ not implemented for ‘Float‘
来进行训练模型加水印时报错RuntimeError: "nll_loss_forward_reduce_cuda_kernel_2d_index" not implemented for 'Float',这个在网上并没有找到解决办法,有的也只是RuntimeError: "nll_loss_forward_reduce_cuda_kernel_2d_index" not implemented for 'int',也就是说之前因为int类型不兼容出了问题,那这个float报错的原因是什么呢?