2016-11-07 14 views
5

Tensorflow ma wiele transformacji, które można zastosować do tensorów 3D reprezentujących obrazy ([wysokość, szerokość, głębokość]), takich jak na przykład tf.image.rot90() lub tf.image.random_flip_left_right().Czy istnieje sposób efektywnego wektoryzacji obrazów Tensorflow na obrazach?

Wiem, że mają być używane z kolejkami, stąd fakt, że działają tylko na jednym obrazie.

Ale czy istnieje sposób na wektorowanie operacji, aby przekształcić tensor 4D ([batch_size, wysokość, szerokość, głębokość]) na tensor o tym samym rozmiarze, z operacją obrazową w pierwszym wymiarze bez wyraźnego zapętlenia się przez nie tf.while_loop()?

(EDIT: chodzi rot90() sprytny hack, zaczerpnięte z NumPy rot90 byłoby zrobić:

rot90=tf.reverse(x,tf.convert_to_tensor((False,False,True,False))) 
rot90=tf.transpose(rot90,([0,2,1,3]) 

EDIT 2: Okazuje się to pytanie już odpowiedział kilka razy (one example) wydaje się, że map_fn jest drogą do zrobienia, jeśli chcesz zoptymalizowaną wersję.Miałem już to zobaczyć, ale zapomniałem.Myślę, że to sprawia, że ​​to pytanie duplikat ...

Jednak dla losowego op lub bardziej złożony op byłoby miło mieć ogólną metodę wektoryzacji istniejących funkcji ...)

Odpowiedz

5

Wypróbuj tf.map_fn.

processed_images = tf.map_fn(process_fn, images) 
+0

Dzięki! Wygląda obiecująco ! – jean

Powiązane problemy