- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 cs231n 2017 class ,当我们反向传播梯度时,我们会像这样更新偏差:
db = np.sum(dscores, axis=0, keepdims=True)
sum
运算背后的基本思想是什么?谢谢
最佳答案
这是损失函数相对于偏差的导数(更准确地说是梯度)的公式(参见 this question 和 this post for derivation details )。
numpy.sum
调用计算沿 0 轴的每列总和。示例:
dscores = np.array([[1, 2, 3],[2, 3, 4]]) # a 2D matrix
db = np.sum(dscores, axis=0, keepdims=True) # result: [[3 5 7]]
结果正是按元素求和[1, 2, 3] + [2, 3, 4] = [3 5 7]
。此外, keepdims=True
保留原始矩阵的秩,这就是为什么结果是 [[3 5 7]]
而不是 [3 5 7]
.
顺便说一句,如果我们要计算np.sum(dscores, axis=1, keepdims=True)
,结果将是[[6] [9]]
.
[更新]
显然,这个问题的焦点是公式本身。我不想在这里过多偏离主题,只是尝试讲述主要想法。由于在前向传递中对小批量进行了广播,因此总和出现在公式中。如果一次只举一个例子,偏差导数只是误差信号,即dscores
(请参阅上面的链接详细解释)。但对于一批示例,由于线性,梯度会被累加。这就是为什么我们沿着batch axis=0
求和。
关于numpy - 怎么理解这个: `db = np.sum(dscores, axis=0, keepdims=True)` ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47175259/
Python 在矩阵上调用 numpy sum 函数时抛出错误。 probs = exp_scores / np.sum(exp_scores, axis=1, keepdims=True) 错误 p
一个 python 问题:我有一个 np.einsum 操作,我正在一对 3d 数组上做: return np.einsum('ijk, ijk -> ik', input_array, self._
Keras 后端有很多函数都带有 keepdims 参数。比如 sum(x, axis=None, keepdims=False) 我找不到任何关于这意味着什么的解释。有人可以解释它的作用吗? 此外,
当我使用np.sum 时,我遇到了一个名为keepdims 的参数。查找后the docs ,我还是不明白keepdims的意思。 keepdims: bool, optional If this i
这是一段神经网络代码示例: def forward_step(X, W, b, W2, b2): hidden_layer = np.maximum(0, np.dot(X, W) + b)
我已在 Jetson Tx1 上安装了 Tensorflow 和 Tflearn。 Tensorflow 可以运行,并且我尝试运行的程序可以在我的 Mac 上运行。但是当我在我的jetson上运行它时
在numpy.sum()中有一个参数叫做keepdims。它有什么作用? 正如您在文档中看到的: http://docs.scipy.org/doc/numpy/reference/generated
我正在尝试实现一个 GlobalMaxPooling2D 层。我有一个 10x10x128 输入,并希望将其缩减为形状为 1x1x128 的 3D 张量。我尝试使用 keepdims=True,但它抛
在 cs231n 2017 class ,当我们反向传播梯度时,我们会像这样更新偏差: db = np.sum(dscores, axis=0, keepdims=True) sum 运算背后的基本思
我是一名优秀的程序员,十分优秀!