卷积神经网络的传播及参数用法

发布于:2025-03-25 ⋅ 阅读:(20) ⋅ 点赞:(0)

问题

问题一:输入通道数不匹配:比如预期输入的图像通道是1,但是得到了3个通道的图像,故而导致运行结果报错。

问题二:在使用卷积层Conv2d 时通过随机生成的输入数据进行向上传播时,因为不了解其各种参数的含义和使用方法从而报错。

方法

问题一:简单的来说,主要就是输入通道数目不匹配,需要我们重新修改最开始输入的输入通道,从而打印出torch.size。

问题二:在使用卷积层Conv2d 时通过随机生成的输入数据进行向上传播时,因为不了解其各种参数的含义和使用方法从而报错。

回答:我们主要通过百度进行查询其参数的使用条件。 

就以本段代码为例:

此处,这段代码是使用 PyTorch 实现的卷积操作。具体来说,它创建了一个卷积层(Conv2d),并使用随机生成的输入数据(x)进行前向传播。以下是代码的解释:

Conv1 = nn.Conv2d(in_channels=1, out_channels=64, kernel_size=7, padding=3, stride=1) 这行代码定义了一个卷积层(Conv2d),其参数如下:

 - in_channels:输入通道数,这里设置为 1,表示输入数据只有一个通道(例如灰度图像)。

 - out_channels:输出通道数,这里设置为 64,表示卷积操作后输出数据有 64 个通道。

 - kernel_size:卷积核(滤波器)的大小,这里设置为 7,表示卷积核的大小为 7x7。

 - padding:输入数据的 padding 大小,这里设置为 3,表示在输入数据的每个边缘上填充 3 个像素,以使卷积核能够与输入数据对齐。

 - stride:卷积操作的步长,这里设置为 1,表示在卷积操作中,每个方向上的输出数据比输入数据不变。
x = torch.rand(size=(1,1,28,28)) 这行代码生成一个随机的输入数据张量(x),其大小为 (1,1,28,28)。这里的维度说明如下: - 1:批量大小(batch size),这里设置为 1,表示只有一个样本。 - 1:通道数(channel),这里设置为 1,表示输入数据只有一个通道(例如灰度图像)。 - 28:高度(height)。 - 28:宽度(width)。

x = Conv1(x) 这行代码使用卷积层(Conv1)对输入数据张量(x)进行前向传播,生成输出数据张量。在这个过程中,卷积层会对输入数据张量(x)的每个像素与卷积核(滤波器)进行点积操作,然后对所有像素的结果进行求和,得到输出数据张量中的一个值。这个过程会重复多次,直到覆盖输入数据张量的所有像素。最后,输出数据张量的形状为 (1,16,24,24),其中: - 1:批量大小(batch size),这里设置为 1,表示只有一个样本。 - 16:输出通道数,这里设置为 16,表示卷积操作后输出数据有 16 个通道。 - 24:高度(height)。 - 24:宽度(width)。

结语

针对卷积神经网络(cnn)的报错及其参数的不了解,首先要理解参数的使用条件和用途,再尝试通过去理解代码上的来源和用法,通过vscode进行试验。证明该方法是有效的,他能帮我们了解卷积层神经网络。