2013-08-21 40 views
0

我开发了一个神经网络程序,它已经运行了一个星期。我想检查java程序的进度,因为如果程序也是终止程序关闭完成将是痛苦的。有没有这样的概念?如何检查正在运行的java程序的进度

+6

您应该在应用程序内部实现这样的功能。如果你没有,那么你无法检查进度。 – 2013-08-21 10:42:16

+1

直到除非你跟踪它,你永远不知道它的工作与否。还输出一些日志,这将告诉你的状态,是否事情是正确的轨道或不..我永远不会运行程序数周,如果我不知道无论它的实际工作与否。 – Rajesh

+0

为什么你没有添加结果以查看进度?你为什么不早点考虑这个:)? – Pawel

回答

4

那么,你叫什么“进步”?没有一般的“进展”定义。这是你的算法特有的。 您必须为此定义一个指标。也许是你正在创建,处理的文件的数量,无论是......可能是迭代次数(如果你知道程序将在固定数量的迭代之后结束)。基本上,您必须知道程序何时停止,以及如何评估到此点的距离。

然后,您可以定期打印此度量标准的值以了解进度。

+1

对于神经网络,可以追踪当前的迭代次数和优化目标的当前值(例如平方损失)。通常会将迭代次数限制为最大值,因此可以计算一些进度百分比。 –

1

这里有一些提示。

您可以使用一些java工具(例如jstat)监视JVM的GC或jstack以查看jvm的Thread。

它不是100%准确的,但它是一个交替。

1

如果您的应用程序没有内置的进度报告,那么可以做的不多。你可以拿thread dump来检查它实际上在做什么。

0

哦,noo!一个星期的学习......当然你可以在下一次打印出一些状态(每小时一次?),如果按照进度你的意思是学习过程,我会在一段时间内进行网络输出测试验证。我将展示当前产出与期望产出的不同之处。这将是你的错误。通常情况下,这个误差较小,学习时误差较小(如果网络没有进入某种奇怪的振荡状态)。这将是你的学习曲线。如果没有大的变化(增量)错误的时期,我会停止学习。

只是小点。您可以检查VisualVM工具(http://visualvm.java.net/)。它基本上连接到你的应用程序,你可以看到一些信息。这更像是探查器,但至少你可以看到你的当前运行应用程序是否还活着。

相关问题