Я работал с задачей трансферного обучения.
Нечаянно, чтобы упростить задачу, я поместил все последние слои в оболочку 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 отдельные слои не являются отдельными объектами и заключены в объект последовательного слоя.
Может быть, еще один взлом? У меня все время в кризисе коронавируса :), подойдет любое другое решение?