Tehát egészen a közelmúltig, én etetés én modell egy FIFOQueue amely sorban áll egy py_func
vá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ő example
változók, ami különböző enqueue_ops
... meghatározó különböző generate_example
funkció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!