通过重复最后一个元素(tensorflow)填充张量

时间:2017-04-12 14:20:55

标签: python tensorflow deep-learning

我有一个以下形状(frames, 128, 128, 3)的视频帧张量,其中帧在25到36之间变化。现在我希望张量通过重复最后一帧{{1}来固定大小(36, 128, 128, 3) 1}}次。

我可以通过以下方式提取形状为36-frames的最后一帧:

(128, 128, 3)

我想现在重复shape = tf.shape(video) last_frame = tf.gather_nd(video, [shape[0]-1])次,并在36-shape[0]的末尾添加它。 我怎么能这样做?

感谢。

2 个答案:

答案 0 :(得分:1)

你可以选择你的最后一个元素,用tf.tile复制它n次,然后连接你的结果。

last = frames[-1]
last_35 = tf.tile(tf.expand_dims(last, 0), [35-tf.shape(frames)[0] ,1,1,1])
frames = tf.concat([frames, last_35], 0)

答案 1 :(得分:1)

你可以使用tf.concat()来连接张量列表,tf.tile()通过复制输入倍数来创建一个新的张量,tf.reshape()

tf.concat([video, tf.reshape(tf.tile(last_frame], 36 - shape[0]), [128, 128, 3]), 0)