Когда src
имеет форму [?]
, tf.gather(src, tf.where(src != 0))
возвращает тензор с формой [?, 0]
. Я не уверен, как размер может иметь размер 0, и я особенно не уверен, как изменить тензор. Я тоже ничего не нашел в документации, чтобы объяснить это.
Я попытался tf.transpose(tensor)[0]
, но первое измерение транспонированного тензора имеет размер 0 и к нему нельзя получить доступ! Что не так?
Я думаю, вы должны использовать 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)
Обратите внимание на разницу в форме выходов.