Python 使用MNIST实施逻辑回归-不收敛?
我希望有人能帮助我。我从头开始实现了逻辑回归(因此没有库,除了Python中的numpy) 我将其用作输入,并决定尝试(因为我正在进行二进制分类)只对两个数字进行测试:1和2。我的代码可以在这里找到 笔记本应在安装了必要库的任何系统上运行 不知何故,我的成本函数并没有收敛。我得到了错误,因为我的A(我的乙状结肠)等于1,因为z变得非常大 我什么都试过了,但我看不出我的错误。如果我漏掉了什么明显的东西,谁能看一眼让我知道吗?这里的重点不是获得高精度。正在使模型收敛到某种程度;)Python 使用MNIST实施逻辑回归-不收敛?,python,numpy,machine-learning,logistic-regression,mnist,Python,Numpy,Machine Learning,Logistic Regression,Mnist,我希望有人能帮助我。我从头开始实现了逻辑回归(因此没有库,除了Python中的numpy) 我将其用作输入,并决定尝试(因为我正在进行二进制分类)只对两个数字进行测试:1和2。我的代码可以在这里找到 笔记本应在安装了必要库的任何系统上运行 不知何故,我的成本函数并没有收敛。我得到了错误,因为我的A(我的乙状结肠)等于1,因为z变得非常大 我什么都试过了,但我看不出我的错误。如果我漏掉了什么明显的东西,谁能看一眼让我知道吗?这里的重点不是获得高精度。正在使模型收敛到某种程度;) 提前谢谢你,我读
提前谢谢你,我读了你的密码。一切看起来都很好。唯一的问题是你的学习率很高。我知道
0.005
是一个很小的数字,但在这种情况下,它太高了,算法无法收敛。这一点从成本的增加中可见一斑。成本降低了一段时间,然后很快开始负增长。这样做的目的是使成本接近于零。在这里,负数并不意味着成本更低。你必须看到震级。我使用0.000008
作为学习率,它运行良好。我得到了错误。问题是我使用了类标签1和2(可以在MNIST中找到),但在二进制分类中,您将这些值与0和1进行比较,因此模型无法收敛,因为sigmoid()
(请参阅我的代码)只能从0变为1(这是一种概率)
用0和1代替1和2很好地解决了这个问题。现在,我的模型收敛到98%的精度:-)
谢谢大家的帮助
问候,,
翁贝托谢谢。很高兴听到这个消息。稍后,我们将尝试您的学习率,并了解其进展情况。感谢您抽出时间检查我的代码。感谢您发布解决方案。