Изменение слоя внутри torch.nn.Sequential wrapper - PullRequest
2 голосов
/ 25 мая 2020

Я работал с задачей трансферного обучения.

Нечаянно, чтобы упростить задачу, я поместил все последние слои в оболочку torch.nn.Sequential вот так:

self.fc=nn.Sequential(
            nn.Linear(24*24*64,80),
            nn.ReLU(True),
            nn.Linear(80,964),
        )

Теперь я хотел изменить последние 80- единичный линейный слой с тождественным отображением. Я обучил эту сеть и сохранил веса, и я не хочу тренировать ее снова (отнимает много времени :().

Есть ли способ заменить линейный слой внутри?

Я знаю обычную замену внешнего слоя на model.fc1=nn.Identity(), но я просто не думаю, что это может произойти здесь, поскольку последние f c отдельные слои не являются отдельными объектами и заключены в объект последовательного слоя.

Может быть, еще один взлом? У меня все время в кризисе коронавируса :), подойдет любое другое решение?

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