You can also convert a 2D grayscale image to a 3D RGB one by doing:
img = img.view(width, height, 1).expand(-1, -1, 3)
Calling .repeat
will actually replicate the image data (taking 3x the memory of the original image) whereas .expand
will behave as if the data is replicated without actually doing so. Thus .expand
is probably better unless you want to change the channels independently of each other.