Я пытаюсь объединить два тензора. к сожалению, некоторая информация об измерениях формы, похоже, теряется в процессе.
Я начинаю с тензора (в моем случае позы перевода) с формой [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)
Вся помощь очень ценится!
Спасибо