I see. you are comparing two times two variables pointing to the same memory storage. Of course, you have zero difference.
Try this:
import copy
init_weights = copy.deepcopy(model.fc1.weight.data)
for epoch in range(1, 3):
    for batch_idx, (dat, target) in enumerate(train_loader):
        data, target = Variable(dat), Variable(target).detach()
        optimizer.zero_grad()
        output = model(data)
        loss = criterion(output, target)
        loss.backward()
        optimizer.step()
        print(torch.sum(model.fc1.weight.data))
trained_weights = model.fc1.weight.data