我希望有人能帮助我。我从头开始实现了逻辑回归(所以没有库,除了 Python 中的 numpy)。
我用了MNIST dataset作为输入,并决定尝试(因为我正在进行二进制分类)仅对两个数字进行测试:1 和 2。我的代码可以在这里找到
笔记本应该在安装了必要库的任何系统上运行。
不知何故,我的成本函数没有收敛。我收到错误,因为我的 A(我的 sigmoid)变得等于 1,因为 z 变得非常大。
我尝试了一切,但没有看到我的错误。如果我错过了一些明显的事情,有人可以看一下并告诉我吗?这里的重点不是获得高精度。让模型收敛到某个东西;)
提前致谢,翁贝托
最佳答案
我读了你的代码。一切看起来都很好。唯一的问题是你的学习率很高。我知道 0.005
是一个很小的数字,但在这种情况下,它对于算法收敛来说太高了。从成本的增加就可以看出这一点。成本会下降一段时间,然后很快就会开始变成负数。这个想法是让成本接近于零。这里负数并不意味着成本较小。你必须看到其规模。我使用 0.000008
作为学习率,效果很好。
关于python - 使用 MNIST 实现逻辑回归 - 不收敛?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45954289/