cs231n学习心得

    xiaoxiao2021-03-25  61

    现象:SVM分类中我写的代码loss持续下下降;但在test上accuracy只有10%左右(10类随机猜测为10%),而该方法应当能达到>30%的Accuracy

    原因1:在SVM分类章节中,我将生成随机batch写成如下形式,导致生成的batch中data和标签不匹配

    #错误写法

    X_batch = X[np.random.choice(num_train,batch_size),:] y_batch = y[np.random.choice(num_train,batch_size)]w

    #正确写法

    batch_inx = np.random.choice(num_train, batch_size) X_batch = X[batch_inx, :] y_batch = y[batch_inx]

    原因2:

    但是这个错误困扰了我很久很久,一直没有排查出来,原因如下:

    1.上述两种写法在train时,loss都会呈类似曲线的下降,这迷惑了我。

    一种解释:

    我推测这是因为在SVM train中,正则化项导致W持续减小,使得Scores=X×W也持续减小导致。

    结论:

    在使用了Regularization时,W即使没有得到正确的训练,它的值也会持续下降,若W的下降会导致loss的下降,则loss会下降并达到一个稳定值,则此时会导致训练正确的假象;

    解决方案:

    在初次测试时,可以Regularization的参数Reg设定为0,以消除此影响。

    转载请注明原文地址: https://ju.6miu.com/read-33543.html

    最新回复(0)