cs231n学习心得

现象: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,以消除此影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值