web-dev-qa-db-fra.com

Comment appliquer le taux d'apprentissage par couches dans Pytorch?

Je sais qu'il est possible de figer des couches uniques dans un réseau par exemple pour ne former que les dernières couches d'un modèle pré-formé. Ce que je recherche, c'est un moyen d'appliquer certains taux d'apprentissage à différentes couches.

Ainsi, par exemple, un taux d'apprentissage très faible de 0,000001 pour la première couche, puis une augmentation progressive du taux d'apprentissage pour chacune des couches suivantes. De sorte que la dernière couche se retrouve alors avec un taux d'apprentissage de 0,01 environ.

Est-ce possible dans pytorch? Une idée comment je peux l'archiver?

14
blue-phoenox

Voici la solution:

from torch.optim import Adam

model = Net()

optim = Adam(
    [
        {"params": model.fc.parameters(), "lr": 1e-3},
        {"params": model.agroupoflayer.parameters()},
        {"params": model.lastlayer.parameters(), "lr": 4e-2},
    ],
    lr=5e-4,
)

Les autres paramètres qui ne sont pas spécifiés dans l'optimiseur ne seront pas optimisés. Vous devez donc indiquer tous les calques ou groupes (OU les calques que vous souhaitez optimiser). et si vous n'avez pas spécifié le taux d'apprentissage, il prendra le taux d'apprentissage global (5e-4). L'astuce est que lorsque vous créez le modèle, vous devez donner un nom aux couches ou vous pouvez le regrouper.

23
Salih Karagoz