In my case, I always visualize the images in 2 ways, there are really common I guess:
Suppose our torch tensor follows the NCHW format.

save tensor into image directly
In this situation, you can use

save_image(make_grid(postprocess_image(batch_tensor), nrow=8),"XXX.jpg")` 

where the postprocess_image() executes some post processing operation, say, unnormalizing.

save tensor into summayWriter
In this case, you can use:

SummaryWriter.add_image("image", make_grid(postprocess_image(batch_tensor), nrow=8), step)

Yep! Note that add_image() assume the input tensor is a 3D tensor with CHW format, for other formations, check the docs out!
Hope this helps.