1
1
问题在于矩阵乘法。 首先假设m=5,n1=5,这意味着x是一个5*5的矩阵,θ和y都是5个元素的向量。 在第一种情况下,sigmoid函数提供一个5*5的矩阵,x的倒数也是5*5。因为它是一个矩阵乘法,所以x'的第一行乘以g的第一列,这意味着您需要所有g值来计算第一行梯度。 在第二种情况下,对于梯度的第一行,sigmoid函数也提供了一个5*5的矩阵,但是它是不同的,因为现在x是一个1*5的矩阵。这意味着矩阵乘法将提供不同的输出,因此结果是不同的。 希望现在一切都清楚了。 **之前我假设theta和y是行向量,但在您的示例中,您已经清楚地提到您使用的是列向量。然而,矩阵乘法仍然是个问题。如果你对矩阵乘法有一个清晰的理解,那么你很容易理解这个问题。 让我们从正确的方程开始, (x*theta)-y=m*1矩阵,因此乙状结肠为m*1矩阵。 x'*乙状结肠是这里的主要部分,因为其他两个术语是标量,x'*乙状结肠=m*1矩阵,最后你的梯度是m*1矩阵。 如果仔细观察,梯度(1,1)取决于x'(1,:)和乙状结肠,并且使用所有theta值计算乙状结肠。所以,梯度(1,1)不仅依赖于θ(1),你不能简单地用θ(1)代替θ,你在错误的情况下做了什么。 |
bz_jf · CNN训练损失太不稳定了 2 年前 |
Bad Coder · 如何在Pyte中使用SMOTE? 2 年前 |
Sherwin R · 随机森林预测错误的输出形状 2 年前 |
Palkin Jangra · 如何迭代一列以获得每行的平均值? 2 年前 |