如何使用点积计算权重的梯度下降成本?
How to calculate gradient descent cost for the weights using a dot product?
我正在尝试从 http://neuralnetworksanddeeplearning.com/chap2.html
重现神经网络
我不明白的是为什么他们可以通过 error/delta 和前一层的转置激活的点积来计算权重的梯度下降。
nabla_w[-1] = np.dot(delta, activations[-2].transpose())
delta
是一维数组。
activations[-2]
也是。我想如果你转置一个一维数组你只会得到一个一维数组..
所以这个点积只给出一个数字而不是我们想要的矩阵。
那么这个点积怎么能给我一个二维矩阵呢?
有没有一种聪明的方法可以用 numpy 实现这一点(计算权重的梯度下降)?
计算两个向量之间的点积,即您的一维数组,应该是 return 单个标量(值)。在两个向量之间执行叉积将产生一个新向量。
因此,它不能生成矩阵。点积不产生矩阵,只产生标量。 np.dot() 以两个矩阵作为参数将 return 矩阵相乘,但这与点积不同。
np.dot
计算两个向量的点积或内积,前提是 a 和 b 都是一维数组。
对于二维矩阵,它只是 returns 这两个矩阵的乘积。
不要将它与点积混淆,因为点积只能用于向量而不是矩阵。
我正在尝试从 http://neuralnetworksanddeeplearning.com/chap2.html
重现神经网络我不明白的是为什么他们可以通过 error/delta 和前一层的转置激活的点积来计算权重的梯度下降。
nabla_w[-1] = np.dot(delta, activations[-2].transpose())
delta
是一维数组。
activations[-2]
也是。我想如果你转置一个一维数组你只会得到一个一维数组..
所以这个点积只给出一个数字而不是我们想要的矩阵。
那么这个点积怎么能给我一个二维矩阵呢?
有没有一种聪明的方法可以用 numpy 实现这一点(计算权重的梯度下降)?
计算两个向量之间的点积,即您的一维数组,应该是 return 单个标量(值)。在两个向量之间执行叉积将产生一个新向量。
因此,它不能生成矩阵。点积不产生矩阵,只产生标量。 np.dot() 以两个矩阵作为参数将 return 矩阵相乘,但这与点积不同。
np.dot
计算两个向量的点积或内积,前提是 a 和 b 都是一维数组。
对于二维矩阵,它只是 returns 这两个矩阵的乘积。 不要将它与点积混淆,因为点积只能用于向量而不是矩阵。