Make sure output of network is normalized to min=0 max=1

Hi i am implementing a Version of DCGAN that works on 1d spectral data. And i have run into a problem where as i need each feature map in the output of the network to be normalized in the range min=0 max=1. I have tried a number of different solutions to this problem, but what i really want to do is just normalize the output of the last layer(Tanh) to be in that range.

What i want is something like this:
min_val = X.min(-1)[0].min(-1)[0]

max_val = X.max(-1)[0].max(-1)[0]

X = (X-min_val[:,None, None])/(max_val[:,None,None]-min_val[:,None,None])

Is it possible to make a function that does this to the output of Tanh, and simultaneously tracks gradients, and is this necessary/desirable?

to illustrate what i want:

This may diverge, because optimal span before normalization is indeterminable. And without span invariance, you just need to replace Tanh with Sigmoid or Hardtanh.