关于卷积神经网络输出通道的困惑
Confusion about the output channels of convolution neural network
我对卷积神经网络中的多通道场景感到困惑。
假设我有一个 10(width) * 5(height) * 6(channels) 图像,我将其输入默认的 2-D 卷积层,stride= 1 和 padding=0 并且 期望输出为 8(width) * 3(height) * 16(channels).
我知道内核的大小是3(width) * 3(height),但我不知道到底有多少内核,以及如何将它们应用于输入数据以提供最终的 16 个通道。
有人可以帮助我。
二维卷积层每个输入通道、每个输出通道包含一个内核。因此,在您的情况下,这将是 6*16=96
个内核。对于 3x3 内核,这对应于 3*3*96 = 864
个参数。
>>> import torch
>>> conv = torch.nn.Conv2d(6, 16, (3, 3))
>>> torch.numel(conv.weight)
864
对于一张图像,每个输入通道首先应用一个内核。在您的情况下,这会产生 6 个特征图,它们被加在一起(+ 可能的偏差)以形成输出通道的 1 个。然后,重复 15 次以形成其他 15 个输出通道。
我对卷积神经网络中的多通道场景感到困惑。
假设我有一个 10(width) * 5(height) * 6(channels) 图像,我将其输入默认的 2-D 卷积层,stride= 1 和 padding=0 并且 期望输出为 8(width) * 3(height) * 16(channels).
我知道内核的大小是3(width) * 3(height),但我不知道到底有多少内核,以及如何将它们应用于输入数据以提供最终的 16 个通道。
有人可以帮助我。
二维卷积层每个输入通道、每个输出通道包含一个内核。因此,在您的情况下,这将是 6*16=96
个内核。对于 3x3 内核,这对应于 3*3*96 = 864
个参数。
>>> import torch
>>> conv = torch.nn.Conv2d(6, 16, (3, 3))
>>> torch.numel(conv.weight)
864
对于一张图像,每个输入通道首先应用一个内核。在您的情况下,这会产生 6 个特征图,它们被加在一起(+ 可能的偏差)以形成输出通道的 1 个。然后,重复 15 次以形成其他 15 个输出通道。