2015-08-19 1 views
4

J'ai construit le modèle nn en utilisant itorch notebook.[torche] comment lire les poids dans le modèle nn

model = nn.Sequential() 

model:add(nn.Reshape(ninputs)) 

model:add(nn.Linear(ninputs,noutputs)) 

Les données d'entrée au modèle

output = model:forward(input) 

Ensuite, j'imprimer le modèle et obtenu cela.

print(model) 

nn.Sequential { 
    [input -> (1) -> (2) -> output] 
    (1): nn.Reshape(3072) 
    (2): nn.Linear(3072 -> 10) 
} 
{ 
    gradInput : DoubleTensor - empty 
    modules : 
    { 
     1 : 
     nn.Reshape(3072) 
     { 
      _input : DoubleTensor - empty 
      nelement : 3072 
      train : true 
      output : DoubleTensor - size: 3072 
      gradInput : DoubleTensor - empty 
      size : LongStorage - size: 1 
      _gradOutput : DoubleTensor - empty 
      batchsize : LongStorage - size: 2 
     } 
     2 : 
     nn.Linear(3072 -> 10) 
     { 
      gradBias : DoubleTensor - size: 10 
      weight : DoubleTensor - size: 10x3072 
      train : true 
      bias : DoubleTensor - size: 10 
      gradInput : DoubleTensor - empty 
      gradWeight : DoubleTensor - size: 10x3072 
      output : DoubleTensor - size: 10 
     } 
    } 
    train : true 
    output : DoubleTensor - size: 10 
} 

comment lire le poids en nn.linear?

Merci d'avance.

Répondre

7

Oh, il est similaire à PHP

model.modules[2].weight 
1

Je trouve que model.modules[1].weight est similaire à model:get(1).weight, mais les deux ne peuvent pas obtenir les paramètres de la couche de table comme bloc résiduel. De cette façon, le bloc résiduel en tant que couche. Toutefois, nous pouvons utiliser params, gradParams = model:parameters() pour obtenir les paramètres pour chaque couche, même dans la couche de table.

Il est à noter que, dans un deuxième temps, chaque couche des paramètres du réseau est divisée en deux couches et disposées en couches