Есть ли тензорный эквивалент для python's list.count ()

1

Я пытаюсь выполнить всю мою работу с конвейером в тензорном потоке. Это включает в себя преобразование примеров в типы, требуемые классификатором.

Я только что узнал, что не могу перебирать строковый тензор, как я бы сделал со стандартным списком python. Мой конкретный вопрос: "существует ли функция tf для проверки существования постоянного значения в тензоре?" Конечно, может быть лучший способ сделать это (я новичок в tf и python).

# creating a unique list of tokens (python)
a_global = []
a = [...]
for token in a:
    if a_global.count(token) == 0:
        a_global.append(token)

Я индексирую строковые токены, поэтому могу по существу преобразовать их в целые числа, используя позицию маркера в списке в качестве нового значения. Этот фрагмент не будет работать, когда "a" является тензором, поэтому я пытаюсь tf.map_fn() вместо этого, но я не знаю, как реплицировать предикат IF-утверждения. Может ли кто-нибудь указать мне в правильном направлении?

tf ver 1.8

Теги:
tensorflow

1 ответ

1

Если для этой операции вам не нужны градиенты (что, я думаю, вы не используете для предварительной обработки), проще всего использовать tf.py_func. Он по существу способен обернуть numpy-фрагменты кода в операторы TensorFlow.

Если это не сработает для вас, посмотрите на это сообщение, чтобы подсчитать случаи. Затем вы можете использовать tf.cond для репликации оператора if.

  • 0
    Это то, что у меня есть в данный момент: ax = tf.map_fn(lambda f: tf.cond(tf.equal(tf.constant(idx_a.count(f)), zero), lambda: fn_true(f), fn_false), a) где «ноль» - постоянный тензор. Кажется, это не работает, потому что когда я запускаю сеанс для вывода значений в «ax», я просто получаю пустые строки: (array([b'', b'', b''], dtype=object)
  • 0
    Не могли бы вы опубликовать работоспособный пример?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню