Can someone point out what are the advantages of this implementation 312 of DropConnect over a simpler method like this:
for i in range(num_batches):

    orig_params = []
    for n, p in model.named_parameters():
        orig_params.append(p.clone())
        p.data = F.dropout(p.data, p=drop_prob) * (1 - drop_prob)

    output = model(input)

    for orig_p, (n, p) in zip(orig_params, model.named_parameters()):  
        p.data = orig_p.data

    loss = nn.CrossEntropyLoss()(output, label)
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()