我有一个以下形状(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]
的末尾添加它。
我怎么能这样做?
感谢。
答案 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)