2016-01-20 9 views
5

Bazı büyük resimleri önceden işlemek için tensorflow kullanıyorum. Hafızanın hızla çöktüğü bir problemim vardı. Python'da çoklu işlemeyi kullanmaya başladım, böylece bellek istediğimde tamamen boşalırdı.Tensorflow: Bir python çoklu işlemine bir oturumun geçmesi

Sorun şu ki, python'un çoklu işlem sıralarını kullanıyorum ve bilinmeyen nedenlerden dolayı tensorflow oturumumu ana işlemden çocuklara geçiremiyorum. Bazı gelişmiş hata ayıklama tekniklerinin kullanılması (yani, her birkaç satırda bir şey basmak) .Python'un oturumdan yararlandığım satırın içinde boşta kaldığını fark ettim, bir hata mesajı atmıyor.

def subprocess(some_image, sess, q): 
    with sess.as_default(): 
     # ... use sess and q ... 
     print "All good and well" #This is printed 
     some_image.eval() #Nothing happens here in console 
     print "Still all good and well" #This is not printed 

if __name__ == '__main__': 
    # ... some initial operations ... 
    some_image = read_some_image() 

    sess = tf.Session() 

    q = Queue() 
    q.put(something) 
    p = Process(target=subprocess, args=(some_image, sess, q)) 
    p.start() 
    p.join() 

Ne sorun olabilir:

Benim kod şöyle görünür? Çok teşekkürler!

+0

çalıştırmak? – MrRed

+0

Doğru hatırlıyorsam, çok işlemli havuzlarla istediğiniz şeyi yapabildim. İstediğim şey, birden fazla işlev çağrısı ile paylaşılan tek bir oturuma sahip olmaktı, ancak bunu yapamadım. Sonunda bellek kullanımını düşük tutmak için diğer yöntemleri tercih ettim – mathetes

cevap

2

"state"'u tf.Session()'daki gibi paylaşabileceğiniz gibi işlemler yapamazsınız. Her işlemin kendi oturumuna ihtiyacı olduğunu düşünürdüm.

+0

İlk bakışta öyle görünüyor. Scriptim çok yavaş çalışıyor, tensorflow oturumları oluşturmanın sık sık performansı etkileyip etkilemediğinden emin değilim. – mathetes

+0

Multiprocessing'in havuz özelliğini kullanmıyor musunuz? – svrist

+0

Bunu bir deneyeceğim! Aslında bu python olayında acemi oldum – mathetes

1

İhtiyacınız olan her şey tensorflow dağıtılır.

  1. üst süreçte grafik ve oturumu oluşturun. Grafik oluştururken bazı operatörleri (özellikle değişkenleri) işçilere yerleştirin.
  2. çocuk süreçleri oluşturmak ve hiç çoklu işlem paketi ile paralel olarak birkaç seans nasıl çalıştırılacağı anlamaya mı onlara