我正在观看Stanford CS231的一些视频:用于视觉识别的卷积神经网络,但不太了解如何使用软件丢失函数计算分析梯度numpy.
从这个stackexchange答案,softmax梯度计算如下:
上面的Python实现是:
num_classes = W.shape[0]
num_train = X.shape[1]
for i in range(num_train):
for j in range(num_classes):
p = np.exp(f_i[j])/sum_i
dW[j, :] += (p-(j == y[i])) * X[:, i]
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释上面的代码片段是如何工作的?softmax的详细实现也包括在下面.
def softmax_loss_naive(W, X, y, reg):
"""
Softmax loss function, naive implementation (with loops)
Inputs:
- W: C x D array of weights
- X: D x N array of data. Data are D-dimensional columns
- y: 1-dimensional array of length N with labels 0...K-1, for …Run Code Online (Sandbox Code Playgroud)