2014-03-25 30 views
0

我建立一個機器學習算法(如神經網絡),其中類變量(即numpy的矩陣)表示系統在飛行暫停Python程序(和恢復)

的各種參數進行系統的培訓通過迭代更新所有類變量來完成。迭代越多越好。我想每天早上起牀並檢查班級變量。之後,我想恢復程序

我打電話在交互式終端程序。這是我能想到的:

  1. 打印到終端 - >矩陣過大,會不會有幫助
  2. 保存到磁盤和負載在另一端
  3. set_trace(),但需要知道事先暫停

是否可以暫停程序並隨類變量一起玩然後恢復?

如果有人需要更多的細節,該計劃是在這裏:github link

+1

是否可以在每次迭代時將狀態保存到文件,並檢查自上次讀取以來是否修改了另一個文件?如果配置文件已更改,請加載新參數並繼續運行。 – Trygve

+1

如果您只想讀取進度並且不想編輯/更改它,爲什麼不每次迭代都會將矩陣寫入文件中。假設每次迭代花費的時間大致相同,您應該能夠找到一定數量的迭代,這些迭代大概適合您覺得方便的時間窗口。 – wflynny

回答

4

我不熟悉numpy的,但這裏是一個簡單的類,它可以停止和恢復:

class Program(): 

    def run(self): 
     while 1: 
      try: 
       self.do_something() 
      except KeyboardInterrupt: 
       break 

    def do_something(self): 
     print("Doing something") 


# usage: 

a = Program() 
a.run() 

# will print a lot of statements 

# if you hit CTRL+C it will stop 
# then you can run it again with a.run() 
+0

短而甜,+1 :) – zx81

3

,如果你有什麼修改model.do_EM()方法以保存每個步驟的當前狀態並檢查配置文件?

def do_EM(self, n_iteration = 10): 
    self.visualizer.visualize(self.param_alpha, self.param_mu, self.param_sigma) 
    for i in range(n_iteration): 
     print "iteration:", i 
     self.step_E() 
     print "done step_E. ", 
     self.step_M() 
     print "done step_M. " 
     self.visualizer.visualize(self.param_alpha, self.param_mu, self.param_sigma) 

     # Save current state 
     self.log.write(...) 
     # Check for config changes 
     self.config.update(...)