L1 regularization implementation in Gluon

I’m trying implement L1 reg on all my layers, however when training is finished, none of the weights in any layers are 0.

My method was to add a W.norm(1) penalty term to the loss value before backward.
Has anyone implemented this before?