torch.nn.Conv2d()輸出張量大小(size)計算

  • torch.nn.Conv2d參數說明,分別以中英對照

        torch.nn.Conv2d(輸入通道, 輸出通道, 捲積核大小, 步幅, 填充)

        torch.nn.Conv2d(in_channels, out_channels, kernal_size, stride,padding)

  • 輸入Conv2d的張量需是四維的

        intput size : ([批次大小, 通道數, 輸入高度, 輸入寬度])

        intput size : ([batch_size, number of channels, height in pixels, width in pixels])

  • 輸出張量大小(size)計算公式
    •  批次數不變
    • 通道數變為輸出通道
    • 高輸出大小 : left lfloor frac{輸入大小 + 2 	imes 填充 - 捲積核大小}{步幅} 
ight 
floor + 1
    • 寬輸出大小 : left lfloor frac{輸入大小 + 2 	imes 填充 - 捲積核大小}{步幅} 
ight 
floor + 1
  • 範例
    import torch
    input1 = torch.randn(64,2,8,9)
    k = torch.nn.Conv2d(2,32,2,3,4)
    output = k(input1)
    print(output.size())
    
    #輸出為:torch.Size([64, 32, 5, 6])

    輸出張量大小(size),批次,通道,高,寬,分別為

    • 批次(batch_size) : 批次不變,故仍為64

    • 通道(channels) : 通道為Conv2d的輸出通道,故為32

    • 高(height) : left lfloor 	frac{8+2	imes 4 - 2}{3} 
ight 
floor + 1 = 4 +1 = 5

    • 寬(width) : left lfloor 	frac{9 + 2	imes 4 - 2}{3} 
ight 
floor + 1 = 5 + 1 = 6