I did this as well, however when I print my lr in every epoch I can see that it dose not change. 
learning_rate = 0.0001
num_epochs = 200
model = Autoencoder().cuda()
criterion = nn.MSELoss()
optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate,
weight_decay=1e-5)
#training loop
loss = 0
epoch_num = 0
error = []
scheduler = StepLR(optimizer, step_size=30, gamma=0.5)
for epoch in range(num_epochs):
for spec in train_loader:
img = spec.cuda()

output = model(img)

loss = criterion (output,img)

optimizer.zero_grad()

loss.backward()

optimizer.step()

scheduler.step()

error.append(loss.item())

if epoch%10 == 9:
  epoch_num+=epoch_num

print (’\r Train Epoch : {}/{} \tLoss : {:.4f}’.format (epoch+1,num_epochs,loss/50))
print(learning_rate)
model_save_name = ‘Autoencoder for Artificial dataset (7) 3 class of data  12 feb Avgpool Tanh activation function’
path = F"/content/drive/My Drive/{model_save_name}"
torch.save(model.state_dict(), path)
plt.plot(error)
plt.xlabel(‘Number of iteration’)
plt.ylabel(‘Loss (MSE)’)
plt.title(‘Loss function vs # of iterations for Artificial dataset’)
even worst than that is, training is not working, loss stays constant