【问题标题】:Calculating shape of conv1d layer in Pytorch在 Pytorch 中计算 conv1d 层的形状
【发布时间】:2023-04-04 13:14:01
【问题描述】:

我们如何在 PyTorch 中计算 conv1d 层的形状。在 PyTorch 中是否有任何命令可以计算这些层的大小和形状。

            nn.Conv1d(depth_1, depth_2, kernel_size=kernel_size_2, stride=stride_size),
            nn.ReLU(),
            nn.MaxPool1d(kernel_size=2, stride=stride_size),
            nn.Dropout(0.25)```

【问题讨论】:

    标签: pytorch size


    【解决方案1】:

    输出大小可以按照文档nn.Conv1d - Shape

    批量大小保持不变,并且您已经知道通道数,因为您在创建卷积时指定了它们(本例中为depth_2)。

    只需要计算长度,您可以使用类似于上述公式的简单函数来计算:

    def calculate_output_length(length_in, kernel_size, stride=1, padding=0, dilation=1):
        return (length_in + 2 * padding - dilation * (kernel_size - 1) - 1) // stride + 1
    

    指定的默认值也是nn.Conv1d的默认值,因此您只需要指定您还指定的内容即可创建卷积。它使用整数除法//,因为分子可能不能被stride 整除,在这种情况下,它只会向下舍入(由仅在底部闭合的括号表示)。

    同样的公式也适用于nn.MaxPool1d,但请记住,如果未指定stride,它会自动设置stride = kernel_size

    【讨论】:

    • 感谢您的回复。在我的情况下,这个公式中的 Lin 应该是 depth_1?我对吗?。因为在 conv1d(input,output,kernel_size,stride)
    • 不,这些是通道,而不是长度,所以 depth_1C_indepth_2C_out。卷积与长度无关,这使得使用不同长度的输入成为可能。这取决于您提供给模型的输入,其大小为 [batch_size, in_channels, length]
    猜你喜欢
    • 1970-01-01
    • 2020-10-03
    • 2017-09-09
    • 1970-01-01
    • 2021-08-09
    • 2021-03-19
    • 1970-01-01
    • 2022-01-21
    • 2023-03-12
    相关资源
    最近更新 更多