我希望有人能帮助我。我从头开始实现了logistic回归(所以没有库,除了Python中的numpy)。在
我使用MNIST dataset作为输入,并决定尝试(因为我正在进行二进制分类)仅对两个数字进行测试:1和2。我的代码可以在这里找到
笔记本应该在任何安装了必要的库的系统上运行。在
不知怎么的,我的成本函数没有收敛。我得到了错误,因为我的A(我的乙状结肠)是等于1,因为z变得非常大。在
我什么都试过了,但我看不出我的错误。如果我漏掉了一些明显的东西,谁能看看我,让我知道吗?这里的重点不是获得高精度。使模型收敛到某个地方;)
提前感谢Umber
我搞错了。问题是我使用了类标签1和2(您可以在MNIST中找到),但是在二进制分类中,您将这些值与0和1进行比较,因此模型无法收敛,因为
sigmoid()
(请参阅我的代码)只能从0到1(是一种概率)。在用0和1代替1和2解决了这个问题。现在我的模型收敛到98%的精度:-)
谢谢大家的帮助!在
谨致问候, 翁贝托
我读你的密码。一切看起来都很好。唯一的问题是你的学习率很高。我知道
0.005
是一个很小的数字,但是在这个例子中它太高了,算法无法收敛。这一点从成本的增加就可以看出。成本降低了一段时间,然后很快开始负增长。这个想法是让成本接近零。这里负数并不意味着成本更低。你必须看到它的大小。我用0.000008
作为学习率,它工作得很好。在相关问题 更多 >
编程相关推荐