1.将训练函数的精度计算挪到1个epoch之后,这样就可以计算得到正常的训练集精度和测试集精度
2.将模型输出的softmax去掉,因为交叉熵函数会自己计算softmax值,如果不去掉,相当于计算两次softmax,导致模型不收敛
3.对于类别较多并且每个类别数据较少的数据集,增大batch_size,增加模型的复杂程度,多加线性层等,能够提高分类效果。还可以做数据增强
4.对于报错:RuntimeError: CUDA error: device-side assert triggered
这一般是模型最后的线性层输出数量小于标签数量带来的越界,这类问题必须要用下面这条语句更改:
model.fc = nn.Linear(input_features, output_features)
我在增加类别后,如果用下面这条语句
model.fc.out_features += new_class_num
虽然能够改变model的线性层输出大小,但是不知为啥还是会报错,这应该是nn.Module类里面一些私有变量的原因,所以最好用上面那条语句更改。