CS231n笔记1--Softmax Loss 和 Multiclass SVM Loss
Posted LiemZuvon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CS231n笔记1--Softmax Loss 和 Multiclass SVM Loss相关的知识,希望对你有一定的参考价值。
Softmax Loss 和 Multiclass SVM Loss
Softmax Loss
给出
(xi,yi)
,其中
xi
是图像,
yi
是图像的类别(整数),
s=f(xi,W)
,其中
s
是网络的输出,则定义误差如下:
例如
s=[3.2,5.1,−1.7]
,则
p=[0.13,0.87,0.00]
,可得
Li=−log(0.13)=0.89
向量化Python代码
def softmax_loss(x, y):
"""
Computes the loss and gradient for softmax classification.
Inputs:
- x: Input data, of shape (N, C) where x[i, j] is the score for the jth class
for the ith input.
- y: Vector of labels, of shape (N,) where y[i] is the label for x[i] and
0 <= y[i] < C
Returns a tuple of:
- loss: Scalar giving the loss
- dx: Gradient of the loss with respect to x
"""
probs = np.exp(x - np.max(x, axis=1, keepdims=True))
probs /= np.sum(probs, axis=1, keepdims=True)
N = x.shape[0]
loss = -np.sum(np.log(probs[np.arange(N), y])) / N
dx = probs.copy()
dx[np.arange(N), y] -= 1
dx /= N
return loss, dx
Multiclass SVM Loss
给出
(xi,yi)
,其中
xi
是图像,
yi
是图像的类别(整数),
s=f(xi,W)
,其中
s
是网络的输出,则定义误差如下:
例如
s=[3,2,5],yi=0
,那么
Li=max(0,2−3+1)+max(0,5−3+1)=3
思考:
question1:如果允许 j=yi ,结果会怎么样?如果使用平均数而非求和又会怎么样?
ans1:如果允许 j=yi ,也就是加上 max(0,syi−syi+1)=1 ;如果使用平均数,就是令结果乘于一个常数;这两种情况将导致误差与原误差不同,但是,由于都是正相关的,所以对于我们最后希望得到的模型没有影响,利用这样的特性,我们可以简化我们的代码。question2:在初期,我们设置Weights近似于零,导致 s也近似于0,那么误差会是多少?
ans2:由于s也近似于0,也即 syi =sj ,那么 mCS231n assignment3 Q4 Style Transfer