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肯定代表時間啊。想什么呢。