无法在Pytorch中实现模型

发布于 2025-02-11 03:45:06 字数 2725 浏览 3 评论 0原文

I have been trying to implement this paper (https://doi.org/10.1109/ICASSP40776.2020.9054563)。现在,在过去的几天里,我遇到了模型中的错误。 我想模仿的模型如下:

纸模型

层。 该模型的代码如下:

class Net(nn.Module):
    def __init__(self, upscale_factor = 2):
        super(Net, self).__init__()
#         self.input_start = nn.(16,256,3)
        self.e1 = nn.Conv2d(16,16, (5,1),stride = (1,2),padding='valid')
        self.e1_dr = nn.Dropout(.5)
        
        self.e2 = nn.Conv2d(128,128, (5,1),stride = (1,2),padding='valid')
#         self.e2.weight
        self.e2_dr = nn.Dropout(.5)

        self.e3 = nn.Conv2d(256, 256,(5,1),stride = (1,2),padding='valid')
        self.e3_dr = nn.Dropout(.5)

        self.e4 = nn.Conv2d(512, 512, (5,1),stride = (1,2),padding='valid')
        
        self.e5 = nn.Conv2d(512,512, (5,1),stride = (2,2),padding='valid')
        
        self.e6 = nn.Conv2d(512,512, (3,1),stride = (2,2),padding='valid')
        
        self.e7 = nn.Conv2d(512,512, (3,1),stride = (2,2),padding='valid')
        
        self.e8 = nn.Conv2d(512,512, (3,1),stride = (2,2),padding='valid')
        
        self.d1 = nn.PixelShuffle(upscale_factor )
        self.d2 = nn.PixelShuffle(upscale_factor)
        self.d3 = nn.PixelShuffle(upscale_factor)
        self.d4 = nn.PixelShuffle(upscale_factor)
        self.d5 = nn.PixelShuffle(upscale_factor )
        self.d6 = nn.PixelShuffle(upscale_factor)
        self.d7 = nn.PixelShuffle(upscale_factor)
        self.d8 = nn.PixelShuffle(upscale_factor)

        

    def forward(self, x):
#         x = (F.leaky_relu(self.input_start(x)))
        x = (F.leaky_relu(self.e1(x)))

        x = (F.leaky_relu(self.e1(x)))
        x = (F.leaky_relu(self.e1_dr(x)))
        x = (F.leaky_relu(self.e2(x)))
        x = (F.leaky_relu(self.e2_dr(x)))
        x = (F.leaky_relu(self.e3(x)))
        x = (F.leaky_relu(self.e3_dr(x)))
        x = (F.leaky_relu(self.e4(x)))
        x = (F.leaky_relu(self.e5(x)))
        
        x = (F.leaky_relu(self.e6(x)))
        x = (F.leaky_relu(self.e7(x)))
        x = (self.e8(x))
        
        
        x = (F.leaky_relu(self.d1(x)))
        x = (F.leaky_relu(self.d2(x)))
        x = (F.leaky_relu(self.d3(x)))
        x = (F.leaky_relu(self.d4(x)))
        x = (F.leaky_relu(self.d5(x)))
        x = (F.leaky_relu(self.d6(x)))
        x = (F.leaky_relu(self.d7(x)))
        x = (F.leaky_relu(self.d8(x)))


          
        return x

每当我运行模型时,我都会收到以下错误: 给定的组= 1,大小的重量[128、128、5、1],预期输入[2、16、248、1]具有128个通道,但有16个通道。

I have been trying to implement this paper (https://doi.org/10.1109/ICASSP40776.2020.9054563). Now, for the last many days, I am stuck with an error in the model.
The model that I want to mimic is as follows:

Paper Model

Where deconvolution has been performed using subpixel layers.
The code for the model is as follows:

class Net(nn.Module):
    def __init__(self, upscale_factor = 2):
        super(Net, self).__init__()
#         self.input_start = nn.(16,256,3)
        self.e1 = nn.Conv2d(16,16, (5,1),stride = (1,2),padding='valid')
        self.e1_dr = nn.Dropout(.5)
        
        self.e2 = nn.Conv2d(128,128, (5,1),stride = (1,2),padding='valid')
#         self.e2.weight
        self.e2_dr = nn.Dropout(.5)

        self.e3 = nn.Conv2d(256, 256,(5,1),stride = (1,2),padding='valid')
        self.e3_dr = nn.Dropout(.5)

        self.e4 = nn.Conv2d(512, 512, (5,1),stride = (1,2),padding='valid')
        
        self.e5 = nn.Conv2d(512,512, (5,1),stride = (2,2),padding='valid')
        
        self.e6 = nn.Conv2d(512,512, (3,1),stride = (2,2),padding='valid')
        
        self.e7 = nn.Conv2d(512,512, (3,1),stride = (2,2),padding='valid')
        
        self.e8 = nn.Conv2d(512,512, (3,1),stride = (2,2),padding='valid')
        
        self.d1 = nn.PixelShuffle(upscale_factor )
        self.d2 = nn.PixelShuffle(upscale_factor)
        self.d3 = nn.PixelShuffle(upscale_factor)
        self.d4 = nn.PixelShuffle(upscale_factor)
        self.d5 = nn.PixelShuffle(upscale_factor )
        self.d6 = nn.PixelShuffle(upscale_factor)
        self.d7 = nn.PixelShuffle(upscale_factor)
        self.d8 = nn.PixelShuffle(upscale_factor)

        

    def forward(self, x):
#         x = (F.leaky_relu(self.input_start(x)))
        x = (F.leaky_relu(self.e1(x)))

        x = (F.leaky_relu(self.e1(x)))
        x = (F.leaky_relu(self.e1_dr(x)))
        x = (F.leaky_relu(self.e2(x)))
        x = (F.leaky_relu(self.e2_dr(x)))
        x = (F.leaky_relu(self.e3(x)))
        x = (F.leaky_relu(self.e3_dr(x)))
        x = (F.leaky_relu(self.e4(x)))
        x = (F.leaky_relu(self.e5(x)))
        
        x = (F.leaky_relu(self.e6(x)))
        x = (F.leaky_relu(self.e7(x)))
        x = (self.e8(x))
        
        
        x = (F.leaky_relu(self.d1(x)))
        x = (F.leaky_relu(self.d2(x)))
        x = (F.leaky_relu(self.d3(x)))
        x = (F.leaky_relu(self.d4(x)))
        x = (F.leaky_relu(self.d5(x)))
        x = (F.leaky_relu(self.d6(x)))
        x = (F.leaky_relu(self.d7(x)))
        x = (F.leaky_relu(self.d8(x)))


          
        return x

Whenever I run the model, I get the following error:
Given groups=1, weight of size [128, 128, 5, 1], expected input[2, 16, 248, 1] to have 128 channels, but got 16 channels instead.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

生寂 2025-02-18 03:45:06

频道计数中存在不匹配。查看您的模型:第一卷积e1期望16频道和输出16,而以下卷积e2期望128OUT_CHANNELS e1in_channels e2必须相等。

There is a mismatch in the channel counts. Take a look at your model: the first convolution e1 expects 16 channels and outputs 16 while the following convolution e2 expects 128! The out_channels of e1 and the in_channels of e2 must be equal.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文