MNIST不收敛的Logistic回归实现?

2024-04-26 09:25:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望有人能帮助我。我从头开始实现了logistic回归(所以没有库,除了Python中的numpy)。在

我使用MNIST dataset作为输入,并决定尝试(因为我正在进行二进制分类)仅对两个数字进行测试:1和2。我的代码可以在这里找到

https://github.com/michelucci/Logistic-Regression-Explained/blob/master/MNIST%20with%20Logistic%20Regression%20from%20scratch.ipynb

笔记本应该在任何安装了必要的库的系统上运行。在

不知怎么的,我的成本函数没有收敛。我得到了错误,因为我的A(我的乙状结肠)是等于1,因为z变得非常大。在

我什么都试过了,但我看不出我的错误。如果我漏掉了一些明显的东西,谁能看看我,让我知道吗?这里的重点不是获得高精度。使模型收敛到某个地方;)

提前感谢Umber


Tags: 代码httpsnumpygithubcom错误二进制分类
2条回答

我搞错了。问题是我使用了类标签1和2(您可以在MNIST中找到),但是在二进制分类中,您将这些值与0和1进行比较,因此模型无法收敛,因为sigmoid()(请参阅我的代码)只能从0到1(是一种概率)。在

用0和1代替1和2解决了这个问题。现在我的模型收敛到98%的精度:-)

谢谢大家的帮助!在

谨致问候, 翁贝托

我读你的密码。一切看起来都很好。唯一的问题是你的学习率很高。我知道0.005是一个很小的数字,但是在这个例子中它太高了,算法无法收敛。这一点从成本的增加就可以看出。成本降低了一段时间,然后很快开始负增长。这个想法是让成本接近零。这里负数并不意味着成本更低。你必须看到它的大小。我用0.000008作为学习率,它工作得很好。在

相关问题 更多 >