создание нового тензора на основе индексов numpy и уникального оператора в TensorFlow - PullRequest
0 голосов
/ 24 апреля 2018

Я хочу создать новый тензор, содержащий уникальные элементы другого тензора и отсортированные по тензору индекса.Ниже приведен иллюстративный код:

import tensorflow as tf
a, _ = tf.unique([[1, 2], [3, 4], [1, 2], [3, 4], [3, 4]])
b, _ = tf.unique([1, 0, 1, 0, 0])
d = a[b, :]
e = tf.global_variables_initializer()
with tf.Session() as sess:
  sess.run(e)
  sess.run(d)
  print d

По сути, в этом случае желаемый выходной тензор должен быть равен [[3, 4], [1, 2]]Почему мой код не работает должным образом?

1 Ответ

0 голосов
/ 24 апреля 2018

Проблема, с которой вы столкнулись, связана с тем, что tf.unique ожидает 1-D входной тензор (см. Здесь: https://www.tensorflow.org/api_docs/python/tf/unique)

Если вы запустите tf.unique на вашем 1-D b-тензоре, это сработает:

import tensorflow as tf
a, _ = tf.unique([[1, 2], [3, 4], [1, 2], [3, 4], [3, 4]])
b, _ = tf.unique([1, 0, 1, 0, 0])
e = tf.global_variables_initializer()
with tf.Session() as sess:
  sess.run(e)
  print (sess.run(b))

[1 0]

Однако, когда вы запустите tf.unique в своем списке списков a, вы получите ошибку:

import tensorflow as tf
a, _ = tf.unique([[1, 2], [3, 4], [1, 2], [3, 4], [3, 4]])
b, _ = tf.unique([1, 0, 1, 0, 0])
e = tf.global_variables_initializer()
with tf.Session() as sess:
  sess.run(e)
  print (sess.run(a))

InvalidArgumentError: уникальный ожидает одномерный вектор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...