For the size issue: did you try running this code with an input of the size usually accepted by VGG16. That a sanity check where if you give it the usual input you are getting the final output as -1,3,1,1.
You say your predictions are not falling between 0 and 2, that means you are getting higher values like 4 and 5 as well? in that case you might be maxmizing over an incorrect dimension, probably the last dimension of the softmax layer which in this example you show as having size 6.