如何理解3D卷積神經網絡核中的參數?


1、輸出、輸出的圖片大小

2、stride 控制,CNN卷積核一次挪動多少。

padding,控制對原始圖片填充多少個東西。能控制卷積之后的feature map的大小;
(3, 3, 3),卷積核的大小,能夠控制使用多少個原始像素參與卷積。

# https://pytorch.org/docs/stable/generated/torch.nn.Conv3d.html

import torch
import torch.nn as nn

input = torch.randn(20, 16, 10, 50, 100)
m = nn.Conv3d(16, 33, 3, stride=1)
output = m(input) #(20, 33, 10, 50, 100)  #20, 33, 4, 24, 49

pass

# m = nn.Conv3d(16, 33, (3, 5, 2), stride=(2, 1, 1), padding=(4, 2, 0))

-----------------

當,m = nn.Conv3d(16, 33, (3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1)) 時
print(output.shape) 結果為 torch.Size([20, 33, 10, 50, 100])

單張圖片的大小沒有發生變化10*50*100,對應D*H*W

3、m = nn.Conv3d(16, 33, 3, stride=1)

16代表,卷積前,的時間尺度。可以理解為用了16個時刻的圖片;

33代表,卷積后,的時間尺度。第一個時間尺度上的feature map等於之前的16個時刻的卷積結果。第二個同樣是之前的16個時刻的卷積結果。以此類推,一共有33個新的時刻。

卷積和的大小是3*3*3.  步長stride=1

===================================================================

以上的理解是錯誤的。↑

請使用以下的理解:

[pytorch] torch.nn.Conv3D 的使用介紹_一點也不可愛的王同學的博客-CSDN博客


 

#構建網絡前,首先需要把數據集的張量,整理成input = torch.randn(N, C, D, W, H)
#N個小視頻;每一幀的通道數為C;視頻的時間深度為D;WH代表寬高

#3D卷積核
# m = nn.Conv3d(1, 1, (3, 5, 5), stride=1)
# 設計卷積核,時間上的卷積是3,空間上的卷積是5;通道數沒變,還是1,可以理解為還是只有一個通道。

#https://pytorch.org/docs/stable/generated/torch.nn.Conv3d.html

對比2D卷積和,多了D,那么D肯定代表時間啊。想什么呢。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM