I would start with some sanity checks to make sure that everything is expected e.g.,
assert len(self.x_data) == 70000
assert len(self.y_data) == 70000
I would then check that the initial loss is roughly -ln(1/num_classes)
or in this case: ~2.30258509299.
As for inspecting that a batch of images looks as expected, you can convert the tensor back to a numpy array and save an image from there: Converting tensors to images
From there I would check if the training accuracy goes to 100 when the training set is very small and reused as the test set.