[英]Tensorflow nn.conv3d() and max_pool3d
最近,Tensorflow增加了對3d卷積的支持。 我正在嘗試訓練一些視頻內容。
我有幾個問題:
我的輸入是每幀16幀,3通道.npy
文件,所以它們的形狀是: (128, 171, 48)
.npy
(128, 171, 48)
。
1) tf.nn.max_pool3d()
)的文檔 tf.nn.max_pool3d()
輸入的形狀應為: Shape [batch, depth, rows, cols, channels]
。 即使我的npy imgs
是48個深度 , 我的頻道維度仍然是3 ,可以這么說嗎?
2)下一個問題與最后一個問題相吻合:我的深度是48還是16?
3) (因為我在這里)批量維度與3d數組相同,對嗎? 圖像就像任何其他圖像一樣,一次處理一個。
需要明確的是:在我的情況下,對於單個圖像批量大小,上面的圖像變暗,我的尺寸為:
[1(batch),16(depth), 171(rows), 128(cols), 3(channels)]
編輯:我把原始輸入大小與池和內核大小混淆了。 也許對這些3D東西的一些一般指導會有所幫助。 我基本上堅持卷積和匯集的維度,正如原始問題中所清楚的那樣。
要回答您的問題,維度應該是(如您所述): [batch_size, depth, H, W, 3]
其中depth
是您擁有的時間幀數。
例如,具有20幀/秒的5s視頻將具有depth=100
。
我最好的建議是首先從大約深度學習的視頻CS231n讀幻燈片在這里 (如果你能看到的視頻 ,它甚至更好)。
基本上,3D卷積與2D卷積相同,但具有一個維度。 我們來回顧一下:
[batch_size, 10, in_channels]
[3, in_channels, out_channels]
in_channels
[batch_size, 10, 10, in_channels]
[3, 3, in_channels, out_channels]
in_channels=3
[batch_size, T, 10, 10, in_channels]
[T_kernel, 3, 3, in_channels, out_channels]
T=100
幀的視頻,大小為10x10的圖像, in_channels=3
T_kernel
(例如: T_kernel=10
) 卷積的目標是減少由於數據冗余而導致的參數數量。 對於圖像,您可以在左上角3x3框和右下角3x3框中提取相同的基本功能。
對於視頻,這是相同的。 您可以從圖像的3x3框中提取信息,但是在一個時間范圍內(例如:10幀)。 結果將在圖像維度中具有3x3的感知域,並且在時間維度上具有10幀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.