PYTHON/DL

[딥러닝 공부노트] 2. 사용 함수 소개 및 설명

Auzii 2022. 2. 28. 14:46
300x250

○ 딥러닝 기초 함수들

 

(1) 데이터 처리과정[3] - Feature scaling - scaler (sklearn - preprocessing - sacler[MinMaxScaler / StandardScaler])

 

- 전처리 작업

- 일반 숫자 범위를 줄여서 학습효과를 더욱 좋게 하는 방법 

   <ex. -3000~39 => -1~1>

 

-- StandardScaler => 평균 0, 분산 1로 조정 / 최솟값과 최댓값 크기 제한 X

-- Normalizer

-- MinMaxScaler => 모든 특성이 0과 1사이 위치

-- RobustScaler

 

--- train의 경우) fit & transform을 통해 학습데이터 세트에서 변환을 위한 기반 설정을 먼저 fit()을 통해서 설정한 뒤, 이를 기반으로 학습 데이터의 transform 수행

 

 

(2) dropout (딥러닝의 한 파라미터)

 

- 과적합을 막기 위한 수단 + 과적합만이 아닌 이를 적용하면 train 효율 증가

- Hidden unit(은닉층)의 몇가지 유닛(뉴런)들을 제거

 

 

(3) Optimizer[5]

 

optimizer = optim.Adam(model.parameters(),weight_decay=0.00001,lr=0.01)

 

- Adam 모델 적용

loss.backward()			#역전파 시작
optimizer.step()		#저장된 grad 값을 이용하여 파라미터 없데이터 => 실질적 모델 개선
optimizer.zero_grad()		#grad 초기화.

- 프레임워크의 순서 상 ① loss 계산, ② loss.backward()로 gradient 계산, ③ optimizer.step()으로 weight 업데이트 순서가 되어야 합니다.

- pytorch의 경우 반드시 zero_grad를 해주어야 하는데, 이는 0으로 초기화 하지 않으면 이전 step의 결과에 현재 step의 gradient가 누적으로 합해져서 계산되어져서

- optimizer.step : weight를 업데이트 하는 시점

 

 

(4) Init weight

 

- 초기 가중치 선정 함수

    def init_weights(m):
        for name, param in m.named_parameters():
            nn.init.uniform_(param.data, -0.15, 0.15)

 

- 0이 아닌 0.x의 값으로 하는데 이는 초기에 0으로 하는 경우 모든 값이 0으로 수렴하기 때문

 

 

(5) Squeeze / Unsqueeze

 

- squeeze : 1인 차원을 제거

   <ex. (3x1)의 크기 중 1을 지워서 (3,)의 크기를 가짐. 즉, 2차원이 1차원으로 축소>

- squeeze : 특정 위치에 1인 차원 추가

   <ex. 차원 추가>

 

 

(6) Teaching Force

 

- 0~1의 확률로 지정

- Model에서 나온 것이 아닌 실제 GT값을 대입

 

 

(7) Dataloader

 

trainloader = Data.DataLoader(
        dataset=train_dataset,      # torch TensorDataset format
        batch_size=BATCH_SIZE,      # mini batch size
        shuffle=False, 
        num_workers=2,              # 0 - default / if > 0, 병목 문제 개선 가능
        drop_last=True,
    )

 

- pytorch를 이용하여 학습할 때는 dataloader를 통해 데이터 세트를 만들어야한다.[데이터 세트 관리 및 미니 배치 생성을 위한 함수 모음]

- 사용하고자 하는 모델을 초기화하고 train 루프가 시작되기 전에 위치하는 것이 일반적

- num_worker = data loading이 병렬적으로 구성하게 하는 방법 [num_workers = torch.cuda.device_count() * 4 ]

 

 

(8) Model - Parameter

 

def count_parameters(model):
    return sum(p.numel() for p in model.parameters() if p.requires_grad)
    
print(f'The model has {count_parameters(model):,} trainable parameters [학습해야할 파라미터 수]')

 

- 학습해야할 파라미터의 수를 취득

 

 

(9) Cuda 사용 (gpu 없는 경우 cpu)

 

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

 

 

 

300x250

'PYTHON > DL' 카테고리의 다른 글

[딥러닝 공부노트] 1. 딥러닝 기초  (0) 2022.02.28