If your train_X had shape (28709, 1, 48, 48) as you said, you would be able to call .expand(-1, 3, -1, -1) on it to get (28709, 3, 48, 48). But you can also grab the general idea of expanding the size-1 channel dimension to three and apply it to any other shape.
Best regards
Thomas