Тензорные тензорные тензоры неопределенной формы - PullRequest
0 голосов
/ 29 апреля 2018

Я пытаюсь объединить два тензора. к сожалению, некоторая информация об измерениях формы, похоже, теряется в процессе.

Я начинаю с тензора (в моем случае позы перевода) с формой [Batch, 3], например: pose_t

Затем я разделил этот тензор на два тензора формы [Batch, 2] и [Batch]

centroid = pose_t[:,:2]
tz = pose_t [:,2]

затем я делаю некоторую обработку на центроиде, в котором размеры меняются на [Batch, 28,28,2]

В конце я хочу объединить обработанный тензор центроида и тензор tz, чтобы получить тензор pose_t формы [Batch, 28, 28, 3]

поэтому я применяю expand_dims () к tz три раза и осям плиток 1 и 2, после чего я получаю тензор формы [1, 28, 28,?], Хотя мне хотелось бы / нужна форма [?, 28 , 28,1]

К сожалению, я думаю, что во время расщепления в начале pose_t в центроиде и tz некоторая информация о форме теряется:

первое измерение по-прежнему должно быть размерностью пакета, но если я выведу форму, размер пакета до [undefined], равный [?, ...], будет равен 1, тогда как ранее определенное последнее измерение теперь не определено.

Нет, у меня есть проблема с конкатенацией тензоров формы [?, 28,28,2] и [1,28,28,?], Что дает мне ошибку.

полный код ниже:

# Process Centroid
cent_deltas = utils.compute_cent_deltas_graph(positive_rois, pose_t[:,0:2], config.MASK_SHAPE[0])
# Append tz from pose_t to cent_deltas in correct dimension
# Expand Dimension 3 times and scale each dimension to propper size
tz = pose_t[:,2]
tz = tf.tile(tf.expand_dims(tf.expand_dims(tf.expand_dims(tz,axis=0),axis=1),axis=2),multiples=[1,config.MASK_SHAPE[0], config.MASK_SHAPE[0],1])
pose_t = tf.concat([cent_deltas, tz],axis=3)

Вся помощь очень ценится! Спасибо

1 Ответ

0 голосов
/ 01 мая 2018

В конце концов expand_dims, у вас есть форма [1, 1, 1, batch_size]. Черепица этой формы сохраняет batch_size как последнее измерение. Вам просто нужно expand_dims в конце, сохраняя размер пакета первым:

tz = tf.expand_dims(tz, axis=-1)
tz = tf.expand_dims(tz, axis=-1)
tz = tf.expand_dims(tz, axis=-1)
tz = tf.tile(tz, ...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...