今天跑自己预训练的Bert的时候出现这个问题,本来以为是模型权重加载的时候出现问题,结果发现是**model = model.to(“cuda”)**报错,很麻。去网上搜了只会,佬们都说是embedding或者标签问题,于是我检查了每个标签,没有问题。然后我再回头检查embedding的时候,是用cpu跑的,因为我的GPU是colab的,没办法调试。用cpu的时候跑得起来,但遇到越界的index就会出错,如果带着这样的数据和模型,去to(“cuda”),它会直接给你报cuda -error错误
总结
-------CPU上:embedding越界错误,报的是index超出边界的错误。
-------GPU上:embedding越界错误,不会运行的途中给你报错,而是to.(“cuda”)后直接报错。
解决办法
-------检查label,如果是二分类,label标签应该是0 和 1,而不是1 和 2.(网上说的)
-------检查embedding,先打印出模型的embedding层,看看是多少维度->embedding_size,这个维度要和词表的大小一样。比如下图,红框中的1696就是我的词表总长度。之前我这里的embedding的是1692,所以报错了。