Actualizar los parámetros de la red neuronal

Actualice los parámetros de la red neuronal:

La regla de actualización más simple es el descenso de gradiente estocástico.

weight = weight - learning_rate * gradient
importar antorcha importar antorcha.nn 
como nn 
importar antorcha.nn.functional como F 
importar antorcha.optim como 


clase optim Net (nn.Module): 

    def __init __ (self): 
        super (Net, self) .__ init __ () 
        self.conv1 = nn.Conv2d (1, 6, 5) 
        self.conv2 = nn.Conv2d (6, 16, 5) 
        self.fc1 = nn.Linear (16 * 5 * 5, 120) 
        self.fc2 = nn.Linear (120, 84) 
        self.fc3 = nn. Lineal (84, 10) 

    def forward (self, x): 
        x = F.max_pool2d (F.relu (self.conv1 (x)), (2, 2)) 
        x = F. max_pool2d (F.relu (self.conv2 (x)), 2) 
        x = x.view (-1, self.num_flat_feature (x)) 
        x = F.relu (self.fc1 (x)) 
        x = F.relu (uno mismo.fc2 (x))
        x = self.fc3 (x)
        return x 

    def num_flat_feature (self, x): 
        size = x.size () [1:] 
        num_features = 1 
        for s in size: 
            num_features * = s 
        return num_features 

net = Net () 
input = antorcha.randn (1, 1, 32, 32) 

objetivo = antorcha.randn (10) # un objetivo ficticio, por ejemplo 
objetivo = objetivo.vista (1, -1) 
# # 举 个 栗子
criterio = nn.MSELoss () 

optimizador = optim.SGD (net. parámetros (), lr = 0.01) 
optimizer.zero_grad () 
output = net (input) 
loss = criterio (output, target) 
loss.backward () 
optimizer.step ()

 

Supongo que te gusta

Origin blog.csdn.net/qq_16792139/article/details/114439537
Recomendado
Clasificación