2017-04-10 30 views
1

我目前正在加載一個數據集張量流由小視頻序列(約30幀),而不是GIF/MPEG他們提供JPEG格式。一個圖像由20-30幀水平堆疊組成。TF:Conner張量水平堆疊圖像到視頻(3D到4D)

現在我用TF使用tf.image.decode_jpeg加載圖像。 圖像的寬度爲64像素(固定),高度爲64 * number_of_frames,因此總體形狀爲(64*number_of_frames,64,3)

有沒有什麼好的方法可以將它轉換成(number_of_frames,64,64,3)張量?

Followup:另外我想重複一下最後一幀,如果視頻太短,這樣所有的採樣都有相同的幀數導致(some_const,64,64,3)張量。

謝謝!

+0

注意,在張量的形狀的第一64是高度自tensorflow讀取圖像作爲張量是'(H ,W,C)'或高度,寬度,通道分別爲 – kmario23

+0

所以,你對「hight是64 * number_of_frames」的解釋是錯誤的。 – kmario23

回答

0

也許像

tf.transpose(tf.reshape(input, [64, 64, number_of_frames, 3]), perm=[2, 0, 1, 3])) 

會工作。我嵌套了兩件事:首先將第二維分解成尺寸爲64和number_of_frames的兩個維度,然後對這些維度進行排列以匹配(64,64*number_of_frames,3)排序。

警告:根據您的數據是如何組織的,您可能要更改[64, 64, number_of_frames, 3][64, number_of_frames, 64, 3][2, 0, 1, 3][1, 0, 2, 3]

0

可以使用tf.transpose和tf.reshape像這樣,

tf.reshape(tf.transpose(x, perm=[1, 0, 2]), [-1, 64, 64, 3]) 
+1

請添加更多上下文。這段代碼做了什麼,它是如何工作的? –