问题记录1: “IndexError: index 13 is out of bounds for axis 1 with size 13“
问题排查过程:
-
首先检查类别数目的设置,类别数目为14,类别数目设置为14,因此index应该可以达到13,排除此问题。
-
通过打印出具体类别的标签发现,一个batch的样本缺少9这个标签,所以总共类别数只有13个,所以无法索引到13。
原因:数据集类别不平衡,类别9的样本数比较少,一个batch中没有随机采样到类别9。
解决方法:增加batch size为256(原来为128)。
效果:问题解决。附带效果,训练的准确度竟然也有所上升(97提升到98)。开心:)
————————————————————————————————————————
后来发现,增加batch的情况并不能从根本上解决类别缺少的问题。
进一步解决:将类别标签后面增加与类别数目相同的一系列数,比如这里是14类,就加上[0,1,2,…,13],在后面的one-hot表示后,再去除后面14个数。
label = np.array(label)
# 加上14个数(以防有的类别在batch中没出现对后面预测产生影响)
for i in range(NB_CLASSE