今天在跑EfficientNet的时候,调试出现以下错误,如图所示:
报错出最后出现在一个不知名文件里面的一行代码:
if input.size(0) != target.size(0):
报错原因为:
IndexError: dimension specified as 0 but tensor has no dimensions
一开始找了半天也没找到原因,网上也搜不到有人回答这个问题,于是自己动手解决。最后发现这个报错的问题好像出在batch_size的大小上面,batch_size不能设置得太小(比如:我一开始设置batch_size=4),后面batch_size调大了之后问题就解决了(我自己是调节到batch_size大于20以上就不会报这个错误了)。
另外,在有一些代码中存在train函数和test函数,而这两个函数里面的batch_size大小有可能是不一样的,所以就有可能出现train函数运行没有报错,但是运行到test函数后就报错的情况,需要留心。