It’s a bit strange to see the initial learning rate seems to be too high, but it’s consistent with the example in the docs:
scheduler = StepLR(optimizer, step_size=30, gamma=0.1)
for epoch in range(100): 
    scheduler.step() 
    train(...) 
    validate(...)

As you call scheduler first, the learning rate will be set to 1e-4 for the next step_size epochs.