Как мне добавить слой в Nural сети в Pytorch - PullRequest
0 голосов
/ 06 января 2019

Я хочу добавить слой в Nural Network, программно он вернул эту ошибку TypeError: forward() missing 1 required positional argument: 'x'

class Net(nn.Module):


    def __init__(self):
        super(Net, self).__init__()

        self.fc1 = nn.Linear(1, 120)
        self.fc2 = nn.Linear(120, 84)
        self.fc3 = nn.Linear(84, 10)

    def forward(self, x):
        x = F.relu(self.fc1(x))
        x = F.relu(self.fc2(x))
        x = self.fc3(x)
        return x

    def num_flat_features(self, x):
        size = x.size()[1:]  
        num_features = 1
        for s in size:
            num_features *= s
        return num_features


netz =Net()
print(netz)



netz = nn.Sequential([nn.Linear(10, 120), netz()])



print(netz)
`

Та же самая ошибка произошла, когда я загружал ее с netz=torch.load()

строка, которая кажется причиной ошибки: netz = nn.Sequential([nn.Linear(10, 120), netz()])

как мне заставить это работать?

1 Ответ

0 голосов
/ 06 января 2019

Хорошо, есть несколько вещей.

Начиная с того, почему вы звоните netz(), вы уже ранее вызывали объект с помощью netz =Net(), так что это не имеет смысла.

Во-вторых, nn.Sequential ожидает *args в качестве аргумента "конструктора", поэтому вы напрямую передаете подклассы модулей: netz = nn.Sequential(Net(), nn.Linear(100,100)) или распаковываете их: nn.Sequential(*[nn.Linear(100,100), Net()]).

Вы также можете добавить несколько модулей, используя OrderedDict, что хорошо документировано в PyTorch документах (, с которыми вам следует ознакомиться, кстати - это есть причина! )

model = nn.Sequential(OrderedDict([
          ('conv1', nn.Conv2d(1,20,5)),
          ('relu1', nn.ReLU()),
          ('conv2', nn.Conv2d(20,64,5)),
          ('relu2', nn.ReLU())
        ]))

Вы также можете добавить модуль с my_modules.add_module("my_module_name", Net()) в существующую коллекцию заказанных модулей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...