2013-08-21 42 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/)。它基本上連接到你的應用程序,你可以看到一些信息。這更像是探查器,但至少你可以看到你的當前運行應用程序是否還活着。

相關問題