Tensorflow уникальный на партии - PullRequest
0 голосов
/ 29 ноября 2018

Я хотел бы найти размер набора целых чисел (без повторений) для многих наборов.В настоящее время я использую

...
un_3 = tf.unique(dataset_iter.get_next())
with tf.Session() as sess:
    while True:
       result = sess.run(un_3, feed_dict={Y: some_other_data})
       ...save result..

для достижения этой цели.Но это работает только на одномерных тензорах.У меня есть два вопроса:

1) Будет ли переход к пакетам (матрицам), скажем, из 100 векторов, запускать код параллельно на GPU, таким образом, сохранить производительность?

2) Если да, то как использоватьподдерживаемая пакетом версия tf.unique ()?

  • Можно ли как-нибудь использовать map_fn для запуска unique () параллельно?

3) Если нет, то как убедиться, что приведенный выше код эффективно работает на графическом процессоре?

--------- Edit -----

Я смог запустить tf.unique () , используя

@tf.contrib.eager.defun
def func(tensors):
    y, idx = tf.unique(tensors) #, dtype=tf.int32)
    return tf.size(y)

un_3 = tf.map_fn(func, un_2, infer_shape=False)

Но остается вопрос - будет ли он работать параллельно на GPU?

1 Ответ

0 голосов
/ 03 декабря 2018

Версия map_fn не параллельна.Поэтому я использовал следующий (не очень чистый) код для обработки пакетов:

un_3_00, _ = tf.unique(un_2[0,:])
un_3_01, _ = tf.unique(un_2[1,:])
un_3_02, _ = tf.unique(un_2[2,:])
...
...