我开发了一个神经网络程序,它已经运行了一周。我想检查java程序的进度,因为如果程序太接近完成就终止程序会很痛苦。有没有这样的概念?
4 回答
好吧,你把什么叫做“进步”?没有一般的“进步”定义。这是特定于您的算法的。您必须为此定义一个指标。也许是您正在创建、处理的文件数量,等等……也许是迭代次数(如果您知道程序将在固定次数的迭代后结束)。基本上,您必须知道程序何时停止,以及如何评估到该点的距离。
然后您可以定期打印该指标的值以了解进度。
这里有一些提示。
你可以使用一些java工具比如jstat来监控JVM的GC,或者使用jstack来查看jvm的Thread。
它不是 100% 准确,但它是一种替代。
如果您的应用程序没有内置的进度报告,那么就无能为力了。您可以进行线程转储以检查它实际在做什么。
哦不!一周学习....下次你肯定可以打印出一些状态(每小时一次?)。如果你的意思是学习过程,我会在一段时间内进行网络输出测试验证。我将展示当前输出与期望的输出有何不同。这将是你的错误。通常,这个错误会更小,并且随着学习而变得更小(如果网络没有进入一些奇怪的振荡)。这将是你的学习曲线。如果不同时期的错误没有大的变化(增量),我会停止学习。
只是小问题。您可以检查 VisualVM 工具 ( http://visualvm.java.net/ )。它基本上连接到您的应用程序,您可以看到一些信息。这更像是探查器,但至少您可以查看当前运行的应用程序是否处于活动状态。