I have developed a neural network program and it has been running from a week.I want to check the progress of the java program because terminating the program if the program is too close of completion would be painful.Is there any concept as such?
-
6You should implement such functionality inside of your application. If you did not, then you cannot check the progress. – Aug 21 '13 at 10:42
-
1until and unless you track it you never know whether its working or not..Also output some logs which will tell you the status and whether things are in right track or not..i will never run a program for weeks if I dont know whether its actually working or not.. – Rajesh Aug 21 '13 at 10:42
-
Why did you not add results to see the progress earlier? Why did you not think about this earlier:)? – Pawel Aug 21 '13 at 10:42
-
Why do you thing people incorporate logging in their programs? At runtime all you have to do is **tail -f logFile.log** :) – Aniket Thakur Aug 21 '13 at 10:43
-
Hi,Actually I have a threshold value and If i limit my threshold value to a digit it works.But since I have increased the value this is the problem – log N Aug 21 '13 at 11:04
4 Answers
Well, what do you call "progress" ? There is no general "progress" definition. This is specific to your algo. You have to define a metric for that. Maybe it's the number of files your are creating, processing, whatever... Maybe the number of iterations (if you know that the program will end after a fixed number of iteration). Basically, you have to know when the program stops, and how to evaluate the distance to this point.
Then you can just print regularly the value of this metric to know the progress.

- 1,719
- 13
- 23
-
1For neural networks one can track the current number of iterations and the current value of the optimization objective (e.g. the squared loss). Usually one limits the number of iterations to a maximum number and thus can calculate some progress percentage. – Thomas Jungblut Aug 21 '13 at 10:51
Here are some tips.
you can use some java tool such as jstat to monitor the JVM's GC, or jstack to see the jvm's Thread.
it's not 100% accurate but its a alternation.

- 65
- 4
If your application has not built-in progress reporting then not much can be done. You can take a thread dump to check what it is actually doing.
Oh noo! One week learning.... Definitely you could print out some status next time (once per hour?).If by progress you mean learning process I would go for network output test verification with some period. I would show how the current outputs differ from desired one. This will be your error. Normally this error is smaller, and smaller with learning (if network doesn't go in to some strange oscillation). This would be your learning curve. If there is no big change (deltas) in error from period to period I would stop the learning.
Just minor point. You could check the VisualVM tool ( http://visualvm.java.net/ ). It basically connects to your application and you can see couple of information. This is more like profiler, but at least you can see if your current run application is alive.

- 1,780
- 3
- 20
- 47