Тензор имеет форму [?, 0] - как изменить форму на [?,]

1

Когда src имеет форму [?], tf.gather(src, tf.where(src != 0)) возвращает тензор с формой [?, 0]. Я не уверен, как размер может иметь размер 0, и я особенно не уверен, как изменить тензор. Я тоже ничего не нашел в документации, чтобы объяснить это.

Я попытался tf.transpose(tensor)[0], но первое измерение транспонированного тензора имеет размер 0 и к нему нельзя получить доступ! Что не так?

  • 0
    Можете ли вы опубликовать воспроизводимый пример кода?
Теги:
tensorflow
python-3.x
reshape
tensorflow-datasets

1 ответ

2
Лучший ответ

Я думаю, вы должны использовать tf.not_equal для выполнения tf.not_equal сравнения на тензоре.

src = tf.constant([0, 1, 1, 0], dtype=tf.int8)
tf.gather(src, tf.where(tf.not_equal(src, 0))).eval(session=tf.Session())

array([[1],
       [1]], dtype=int8)

Вы также можете немного сократить это значение и использовать tf.boolean_mask вместо tf.where и tf.gather:

tf.boolean_mask(src, tf.not_equal(src, 0)).eval(session=tf.Session())
array([1, 1], dtype=int8)

Обратите внимание на разницу в форме выходов.

Ещё вопросы

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