인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

윤지형님의 프로필 이미지

작성한 질문수

딥러닝 이론 + PyTorch 실무 완전 정복

[실습] 직접 만든 CNN 모델과 ResNet, VGGNet을 활용한 CV 프로젝트

[section 14 / [실습] 직접 만든 CNN 모델과 ResNet, VGGNet을 활용한 CV 프로젝트] transforms.Normalize 질문

해결된 질문

작성

·

40

1

cifar10 데이터셋에 대하여 Normalize를 적용하는 이유가 궁금합니다.

  1. mean과 std 리스트에 들어있는 값의 의미가 무엇인가요?

  2. 이미 ToTensor()로 0~1값의 스케일링 된 데이터를, 표준화까지 적용하여 평균0, 분산 1로 만드는데 장점이 있는건가요??

normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])


def get_dataloaders():
    train_data = torchvision.datasets.CIFAR10(
        root="../.cache",
        train=True,
        download=True,
        transform=transforms.Compose([torchvision.transforms.ToTensor(), normalize]),
    )

답변 1

0

변정현님의 프로필 이미지
변정현
지식공유자

안녕하세요!

좋은 질문 감사합니다!

mean과 std에 들어가있는 값들은 0~1 사이로 normalize (정규화)된 CIFAR 데이터셋의 각 채널별 평균과 표준편차 값들 입니다! 이미 계산되어 있는 값을 가져와서 사용한 것입니다.

저희는 0~1 사이로 CIFAR 데이터셋을 정규화한 후, 정규화된 데이터셋이 평균이 0이 되고 표준편차가 1이 되도록 standardize (표준화)하고 싶습니다. 따라서 (X - mean) / std 로 각 채널별로 표준화하는 것입니다!

 

스크린샷 2025-03-02 오후 3.04.56.png