brunch

You can make anything
by writing

C.S.Lewis

by 유윤식 Aug 14. 2021

PyTorch 쓰세요(4).

#auto_lr_find #최적의 학습률 구하기


PyTorch Lightning 사용하면서 Trainer 모듈에서 다양한 옵션을 설정하는 것을 볼 수 있었는데, 그 중에서 바로 auto_lr_find 에 대해서 살펴보려고 한다





초기 학습률 계산 auto_lr_find


초기 Init Learning Rate 를 어떻게 해야할지 가끔 고민할 때가 있긴 있다.

사실 지금까지는 느낌적인 느낌으로 0.001 정도? 써보고 그 다름에 수정하면서 알맞은 학습률을 찾아왔었다.


알다시피 학습률은 Deep Learning 에서 정말 중요한 H.P 이다. 이제 걱정없이 초기 학습률을 계산해서 사용할 수 있게되었다.



사용법은 코드를 참고해서,


trainer = Trainer(

    precision=32,

    auto_lr_find=True,

    gpus=AVAIL_GPUS,

    accelerator="dp",

    max_epochs=50,

    progress_bar_refresh_rate=10,

    callbacks=[chk_callback, earlystop_callback, lrmonitor_callback]

)



기존 코드와 동일하고 auto_lr_find 옵션을 True로 변경했다.



trainer.tune(model)

lr_finder = trainer.tuner.lr_find(model)


이러면 자동으로 tune이 진행되고

최고의 초기 학습률을 찾는 작업 진행이 pregress_bar 로 표시된다.



그래서 어떤 학습률이 선택되었을까?



new_lr = lr_finder.suggestion()


결과는 0.00229 정도로 나왔다.

이제 이 learning rate 를 초기 학습률로 지정하고 모델 학습을 진행



model.hparams.lr = new_lr

trainer.fit(model)


학습은 대략 21번째 Epoch 에서 종료되었으며,



trainer.test()


위의 테스트를 진행한 결과는

지난번과 비슷한 결과를 볼 수 있다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari