Tensorflow: többszálú enqueue_op ha py_func

szavazat
1

Tehát egészen a közelmúltig, én etetés én modell egy FIFOQueue amely sorban áll egy py_funcváltozót. Ennek oka az, hogy ez a furcsa választás, hogy létrehoz edzési adatok menet közben, és nincs más választása, mint amelyben a python-függvényt az adatokat.

Minden működött szépen, de találtam magam korlátozott az a sebesség, amellyel az adatot generál. Már optimalizált a generáló algoritmust úgyhogy most szeretnének indítani több Enqueue szálak.

Probléma: én így egy nagyon furcsa és véletlen hibák. Néha lehet egy SegmentationFault, néha működik, amíg semmi sem lesz soha elküldtük (gyanítom holtpont) ...

Itt nagyjából amit csinálok:

def generate_example():
    ...
example = tf.py_func(generate_example, inp=[], Tout=...)    
enqueue_op = queue.enqueue(example)
qr = tf.train.QueueRunner(queue, [enqueue_op] * 4)
tf.train.add_queue_runner(qr)

Figyeljük meg, hogy megpróbáltam őrült változatai ezt a kódot (meghatározza a több különböző exampleváltozók, ami különböző enqueue_ops... meghatározó különböző generate_examplefunkciók ...).

Az én megértés, mivel Python nem kezeli a többszálas nagyon jól, hogy ez nem valószínű, hogy működik. De mi, talán tudjátok, a környéket?

Kösz!

A kérdést 17/07/2017 15:42
felhasználó
Más nyelveken...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more