Yes, you could directly return the 3D tensor, which would have the shape [batch_size=1, 512, 512, 600] inside the training loop.
Afterwards, you could index each slice via:
for data, target in loader:
    # data will have the shape [1, 512, 512, 600]
    for idx in data.size(3):
        x = data[:, :, :, i]
        # x will have the shape [1, 512, 512]

and could then pass x to the model.