JAEMTO
(잼토 김)
12월 2, 2021, 1:18오후
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의 값을 갖는걸로 알고 있어서요.
9bow
(박정환)
12월 3, 2021, 3:29오전
2
안녕하세요, @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개의 좋아요
JAEMTO
(잼토 김)
12월 4, 2021, 6:40오전
3
정규화라는게, 통계에서 말하는 정규화인건가요??
그러니까, [0,255] 의 각각의 원소들에 1/255를 곱하면-> [0,1] 이 될텐데 이런식으로 한건지?
아니면 통계에서 정규화, 예를 들어 (원소 - 평균)/ std 이런식으로 한건지 궁금합니다. 설명에서도 잘 모르겠어서요 ㅠㅠ