First thing you should know about TensorFlow: it is not, it is Higher Dimensional Matrix Flow. It doesn’t think of or implement tensors as mappings between vector spaces, so it doesn’t distinguish between covariant and contravariant tensors and is coordinate dependent (in fact “reshape” implies it uses the identity matrix in your specific coordinate system to conflate the two).