torchvision.datasets.MNIST는 처음부터 0에서 1사이인가요??

train_set = torchvision.datasets.MNIST(root = './data/MNIST',train = True,download = True,\transform = transfroms.Compose([transfroms.ToTensor()])

train_set[0]

하니까 매트릭스의 Elements들이 다 0에서 1부터네요. 원래 그런건가요?

제가 기억하기론 MNIST들의 이미지 원소들은 1에서 255의 값을 갖는걸로 알고 있어서요.

안녕하세요, @JAEMTO 님.

남겨주신 코드를 보면(오타는 수정하였습니다 ^^;) transforms.ToTensor()를 사용하신거로 보입니다.

train_set = torchvision.datasets.MNIST(root = './data/MNIST', train = True, download = True, transform = transforms.Compose([transforms.ToTensor()]))

transforms.ToTensor()는 PIL Image를 Tensorf로 바꿔주는데, 이 과정에서 [0, 255]의 범위를 갖는 값들을 [0.0, 1.0]으로 정규화를 합니다.

아래는 PyTorch 문서의 설명입니다.

Converts a PIL Image or numpy.ndarray (H x W x C) in the range [0, 255] to a torch.FloatTensor of shape (C x H x W) in the range [0.0, 1.0] if the PIL Image belongs to one of the modes (L, LA, P, I, F, RGB, YCbCr, RGBA, CMYK, 1) or if the numpy.ndarray has dtype = np.uint8

(자세한 설명과 소스코드는 아래 링크 참고 부탁드립니다.)
https://pytorch.org/vision/stable/transforms.html#torchvision.transforms.ToTensor
https://pytorch.org/vision/stable/_modules/torchvision/transforms/transforms.html#ToTensor

말씀하신 [0, 255] 범위를 갖는 Tensor로 변화를 하고 싶으시다면, ToTensor()가 아닌 PilTensor()를 사용해보시기 바랍니다.

train_set = torchvision.datasets.MNIST(root = './data/MNIST', train = True, download = True, transform = transforms.Compose([transforms.PILToTensor()]))

(자세한 설명과 소스코드는 아래 링크 참고 부탁드립니다.)
https://pytorch.org/vision/stable/transforms.html#torchvision.transforms.PILToTensor
https://pytorch.org/vision/stable/_modules/torchvision/transforms/transforms.html#PILToTensor

1개의 좋아요

정규화라는게, 통계에서 말하는 정규화인건가요??

그러니까, [0,255] 의 각각의 원소들에 1/255를 곱하면-> [0,1] 이 될텐데 이런식으로 한건지?

아니면 통계에서 정규화, 예를 들어 (원소 - 평균)/ std 이런식으로 한건지 궁금합니다. 설명에서도 잘 모르겠어서요 ㅠㅠ