The current gradient scenario is from when preTrain==True and it does not show any gradient flow thru the network except the last layer.
The suppQueryFusion after the if-else construct looks like this [x,x,x],where x is the output from the encoder. So I would expect the encoder to be able to learn.
The penultimate layer also is not showing any gradient flow which is not part of the encoder. check out conv1_1_1.
Also in the case of where preTrain==False (not used untill now) the output of the encoder is added with weights and i would expect gradient to flow thru the encoder as well.