Search

Normalization

대분류
인공지능/데이터
소분류
ML/DL 정리 노트
유형
딥 러닝
부유형
Introduction Pytorch
최종 편집 일시
2024/10/27 15:17
생성 일시
2024/10/23 07:02
14 more properties

Normalization(정규화)

값의 범위(scale)을 0-1 사이로 변경
학습 전에 scaling하는 이유
머신러닝에서 scale이 큰 feature의 영향이 비대해지는 것을 방지
딥러닝에서 Loacal Minima에 빠질 위험 감소(학습 속도 향상)

비정규화

from torchvision import datasets from torchvision.transforms import ToTensor, Lambda ds1 = datasets.FashionMNIST( root="fashion_data", train=True, download=True )
Python
복사
> len(ds1) 60000 > ds1[10] (<PIL.Image.Image image mode=L size=28x28>, 0)
Python
복사
ds_features, ds_label = ds1[1] # (features, target) > np.array(ds_features).shape (28, 28)
Python
복사
> np.array(ds_features) ndarray (28, 28)
Python
복사
> np.array(ds_features).max(), np.array(ds_features).min() (255, 0) > ds_label 0
Python
복사

정규화

from torchvision import datasets from torchvision.transforms import ToTensor, Lambda ds2 = datasets.FashionMNIST( root="dafashion_datata", train=True, download=True, transform=ToTensor(), # Features 정규화 # target = 5 # -> (0.0, 0.0, 0.0, 0.0, 1, 0.0, 0.0, 0.0, 0.0, 0.0) # -> 원핫인코딩으로 변환 target_transform=Lambda(lambda y: torch.zeros(10, dtype=torch.float)\ .scatter_(0, torch.tensor(y), value=1)) # target 정규화 )
Python
복사
> ds_feautres, ds_label = ds2[1] > np.array(ds_feautres).max(), np.array(ds_feautres).min() (1.0, 0.0) > ds_feautres.shape torch.Size([1, 28, 28]) > ds_label # 0 -> T-Shirt tensor([1., 0., 0., 0., 0., 0., 0., 0., 0., 0.]) > len(ds_label), ds_label.shape (10, torch.Size([10]))
Python
복사