web-dev-qa-db-fra.com

Comment itérer des couches à Pytorch

Disons que j'ai un objet de modèle réseau appelé m. Maintenant, je n'ai aucune information préalable sur le nombre de couches de ce réseau. Comment créer une boucle pour itérer sa couche? Je cherche quelque chose comme:

Weight=[]
for layer in m._modules:
    Weight.append(layer.weight)
8
Infintyyy

vous pouvez le faire aussi:

for name, m in mdl.named_children():
    print(name)
    print(m.parameters())

Référence:

# https://discuss.pytorch.org/t/how-to-get-the-module-names-of-nn-sequential/39682
# looping through modules but get the one with a specific name

import torch
import torch.nn as nn

from collections import OrderedDict

params = OrderedDict([
    ('fc0', nn.Linear(in_features=4,out_features=4)),
    ('ReLU0', nn.ReLU()),
    ('fc1L:final', nn.Linear(in_features=4,out_features=1))
])
mdl = nn.Sequential(params)

# throws error
# mdl['fc0']

for m in mdl.children():
    print(m)

print()

for m in mdl.modules():
    print(m)

print()

for name, m in mdl.named_modules():
    print(name)
    print(m)

print()

for name, m in mdl.named_children():
    print(name)
    print(m)
1
Charlie Parker