RuntimeError: invalid argument 5: k not in range for dimension at...

问题根源

这种情况往往出现在使用pytorch训练模型过程中,调用topk方法的时候。问题根源是,传入的参数超过了该dimension的限制。
例如tmp的shape是[4,128,1],而调用了tmp.topk(129,dim=1),显然129>128是不合理的。

另一种可能是,dataloader在load数据的时候,最后一个batch只剩了一个1个数据,而由于某些squeeze的操作导致传回的结果d的shape不是[1,128,1],而是[1,128]或者[128]。这种情况下,出现了和上面相同的错误。

总之,这种错误肯定是由于传入的参数大于给定的dimension的总数据量。