Help me for this error:torch.nn.modules.module.ModuleAttributeError:

The following code, I hope to add a class “preprocess” for NN. However, I get the error:torch.nn.modules.module.ModuleAttributeError: ‘Darknet’ object has no attribute ‘prePrp’

import torch.nn as nn
class preprocess(nn.Module):
    def __init__(self):
        super(preprocess, self).__init__()
    def forward(self, x):
        print('here')
        return x + 200
class SuperResolutionNet(nn.Module):
    def __init__(self):
        super(SuperResolutionNet, self).__init__()
        self.relu = nn.ReLU(inplace=False)
        self.conv1 = nn.Conv2d(1, 64, (5, 5), (1, 1), (2, 2))
        self.modules = self.creat_network()
        self.prePrp = preprocess()

    def creat_network(self):
        models = nn.ModuleList()
        models.append(self.prePrp)
        model = nn.Sequential()
        model.add_module('conv{0}'.format(1),
                         nn.Conv2d(3, 64, 3, 1, 0, bias=False))
        model.add_module('bn{0}'.format(1), nn.BatchNorm2d(3))
        models.append(model)

    def forward(self, x):
        for m in self.modules:
            x = m(x)
        return x

torch_model = SuperResolutionNet()
print(torch_model)

Thank you very much

self.creat_network() tries to access self.prePrp before it’s created, so you would have to move its creation before calling self.creat_network()`:

class SuperResolutionNet(nn.Module):
    def __init__(self):
        super(SuperResolutionNet, self).__init__()
        self.relu = nn.ReLU(inplace=False)
        self.conv1 = nn.Conv2d(1, 64, (5, 5), (1, 1), (2, 2))
        self.prePrp = preprocess()
        self.modules = self.creat_network()
    ...

Thank you ptrblck. I get it