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 ()