otterspace:

At this point I am simply echoing the input to my layer back into the network, all parameters’ requires_grad are set to False, all custom gradients return None.


If you are returning None gradients, you would detach the computation graph at this point and all preceding layers wouldn’t get any gradients, which could explain the issues you are seeing.
In case you want to write a “no-op” numpy layer, you could pass on the gradients to the preceding layer.