我正在尝试从http://neuralnetworksanddeeplearning.com/chap2.html复制神经网络
我没有得到的是为什么他们可以通过获取误差/增量与上一层的转置激活量的点积来计算权重的梯度下降。
nabla_w[-1] = np.dot(delta, activations[-2].transpose())
delta
是一维数组。
activations[-2]
也是。我以为如果转置一维数组,您只会得到一维数组。
因此,这个点积只给出了我们想要的一个数字,而不是一个矩阵。
那么这个点积如何给我一个二维矩阵?
并且有一种聪明的方法来用numpy实现这一点(计算权重的梯度下降)吗?
答案 0 :(得分:0)
计算两个向量之间的点积,即您的一维数组,应该返回单个标量(值)。在两个向量之间执行叉积运算将产生一个新向量。
因此,它不能生成矩阵。点积不会产生矩阵,只会产生标量。具有两个矩阵作为参数的np.dot()将返回矩阵的乘法,但这与点积不同。
答案 1 :(得分:0)
np.dot
计算两个向量的点或内积,如果a和b均为一维数组。
对于2D矩阵,它仅返回这两个矩阵的乘法。 请勿将其与点积混淆,因为点积仅适用于向量而不适用于矩阵。