Thanks for your help.
I prepared a minimal working example of my code. Maybe there is something wrong, because I am new to Pytorch and do not something important. Maybe you can see anything?
import numpy as np
import numpy.random as rnd

import torch
from torch.autograd import Variable
import torch.nn as nn
import torch.nn.functional as F
import torch.utils.data as data_utils
import torch.optim as optim
import torch.nn.init as init

#
# Return data
#
def sparse_data(N, k, num):
    X         = np.zeros((N, num))
    X[0:k,:]  = np.abs(rnd.normal(0, 1, size=(k, num)))
    idx_1     = rnd.sample(X.shape).argsort(axis=0)
    idx_2     = np.tile(np.arange(X.shape[1]), (X.shape[0], 1))
    return np.transpose(X[idx_1, idx_2])
    
#    
# Define model
#
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.fc1 = nn.Linear(100, 80, bias=False)
        init.normal(self.fc1.weight, 0, 1)
        self.fc2 = nn.Linear(80, 90)
        self.fc3 = nn.Linear(90, 100)

    def forward(self, x):
        x = self.fc1(x)
        x = F.sigmoid(self.fc2(x))
        x = F.sigmoid(self.fc3(x))
        return x
    
#    
# Prepare data
#
# <-- sample x -->
X_train = sparse_data(N=100, k=20, num=500)
train = data_utils.TensorDataset(torch.from_numpy(X_train).float(), torch.from_numpy(X_train).float())
train_loader = data_utils.DataLoader(train, batch_size=1)

model     = Net()
optimizer = optim.SGD(model.parameters(), lr=0.01)
criterion = nn.MSELoss(size_average=False)

#
# Train
#
model.train()
init_weights = model.fc1.weight
for epoch in range(1, 3):
    for batch_idx, (dat, target) in enumerate(train_loader):
        data, target = Variable(dat), Variable(target)
        optimizer.zero_grad()
        output = model(data)
        loss = criterion(output, target)
        loss.backward()
        optimizer.step()
trained_weights = model.fc1.weight

#
# Output
#
print(torch.sum(trained_weights), torch.sum(init_weights), torch.sum(trained_weights-init_weights))

Output is:
Variable containing:
 80.6124
[torch.FloatTensor of size 1]
 Variable containing:
 80.6124
[torch.FloatTensor of size 1]
 Variable containing:
 0
[torch.FloatTensor of size 1]