隐藏层的训练不起作用

我一个月前开始自学机器学习,特别是深度学习,并且在这方面付出了很多努力。在掌握了所有数学概念后,我决定自己用Python编写一个神经元网络,运行效果很好(超高精度)。

现在我决定使用一个包含2个神经元的隐藏层、1个输出神经元和2个输入来进行尝试,但这不起作用……实际上,成本没有下降,精度也没有提高。但程序是可以运行的(输出如下)

(代码内容保持不变)

这段代码效率不高,因为我试图一步一步地做,以便理解所有内容。我知道问题出在隐藏层的训练上,但它们遵循了我在网上看到的公式(神经元输入 * (预测 – 目标) * sigmoid’(预测) * (下一层权重)),这就是为什么我真的不理解。

这是我的输出(开始和结束时的精度,以及中间的成本),精度没有提高,成本也没有下降:

(代码内容保持不变)

如果你们能帮我解决这个问题,那就太棒了!


回答:

可能是你的导数函数有一些错误。

(代码内容保持不变)

假设你在最后一层输出层有 out_F = sigmod(in_F),其中 out_F 是你的 predictionin_F 是最后一个节点的输入。
这里,对于这个函数,正如你的函数名所暗示的,可能指的是对 in_F 进行求导。所以应该是 d{out_F}/d{in_F} = out_F * (1 - out_F)

试试这个:

(代码内容保持不变)

Related Posts

为什么我们在K-means聚类方法中使用kmeans.fit函数?

我在一个视频中使用K-means聚类技术,但我不明白为…

如何获取Keras中ImageDataGenerator的.flow_from_directory函数扫描的类名?

我想制作一个用户友好的GUI图像分类器,用户只需指向数…

如何查看每个词的tf-idf得分

我试图了解文档中每个词的tf-idf得分。然而,它只返…

如何修复 ‘ValueError: Found input variables with inconsistent numbers of samples: [32979, 21602]’?

我在制作一个用于情感分析的逻辑回归模型时遇到了这个问题…

如何向神经网络输入两个不同大小的输入?

我想向神经网络输入两个数据集。第一个数据集(元素)具有…

逻辑回归与机器学习有何关联

我们正在开会讨论聘请一位我们信任的顾问来做机器学习。一…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注