首页 > 解决方案 > 需要帮助使用 Keras 的 model.predict

问题描述

我的目标是通过提供某个 Graph 的 2 个顶点和 1(如果有链接)或 0(如果没有链接)来拟合神经网络。

我拟合了我的模型,它的损失约为 0.40,拟合期间的准确度约为 83%。然后,我通过提供一批所有正样本和几批负样本(使用 random.sample)来评估模型。我的模型对于正样本的准确度损失约为 0.35 和 1.0,对于负样本的准确度损失约为 0.46 和 0.68。

我对神经网络的理解非常有限,但根据我的理解,上面的意思是理论上它在没有链接时输出 0 时总是正确的,但有时即使没有链接也可以输出 1。

现在我的实际问题是:我尝试通过 model.predict 用我的神经网络“重建”原始图。问题是我不明白预测输出的含义。起初我假设高于 0.5 的值意味着 1,否则为 0。但如果是这种情况,模型甚至无法接近重建原始模型。

我知道它不会是完美的,但它只是为随机链接候选返回高于 0.5 的值。

有人可以向我解释 model.predict 的工作原理以及如何正确使用它来重建我的图表吗?

标签: pythontensorflowmachine-learningkeraspredict

解决方案


您训练的模型并未直接针对图形重建进行优化。不失一般性,对于N-node 图,您需要预测N choose 2链接。并且可以合理地假设大多数这些链接的真实值为 0。

在查看 0 类和 1 类的模型准确性时,很明显,假设您的训练数据是平衡的,您的模型很容易预测 1 类。因此,您重建的图形包含许多误报链接。这就是重建图性能不佳的确切原因。

如果可以重新训练模型,我建议你这样做并使用更多的负样本。

如果没有,您需要考虑应用一些后处理。例如,不是找到一个阈值来决定哪两个节点有一个链接,而是使用原始预测的链接概率来形成一个节点到节点的链接矩阵,并应用最小生成树之类的东西来进一步确定什么是合适的链接。


推荐阅读