줄리아 Flux에서 신경망 훈련모드, 테스트모드 설정하는 방법
설명
신경망의 구조 중에서 훈련과정과 테스트과정에서 다르게 작동해야하는 부분이 있다. 예를 들어, 드롭 아웃은 훈련 중에는 적용되어야하지만, 훈련이 끝난 뒤 테스트 중이나 실제 사용 환경에서는 적용되어서는 안된다. 이런 경우에는 훈련모드와 테스트모드를 구분하여 사용해야한다.
코드
신경망을 훈련 모드로 전환하는 함수는 trainmode!
, 테스트 모드로 전환하는 함수는 testmode!
이다. 각 함수에 의해서 Dropout
나 BatchNorm
레이어 등의 활성화 여부가 변경된다.
julia> using Flux
julia> net = Chain(
Dense(2 => 4),
Dropout(0.4),
)
Chain(
Dense(2 => 4), # 12 parameters
Dropout(0.4),
)
julia> trainmode!(net)
Chain(
Dense(2 => 4), # 12 parameters
Dropout(0.4, active=true),
)
julia> net(ones(2, 5))
4×5 Matrix{Float32}:
0.0 0.0 0.0 0.0 0.122787
2.28202 0.0 0.0 2.28202 2.28202
-1.11088 -0.0 -1.11088 -1.11088 -0.0
0.995571 0.0 0.995571 0.0 0.995571
julia> trainmode!(net)
Chain(
Dense(2 => 4), # 12 parameters
Dropout(0.4, active=false),
)
julia> net(ones(2, 5))
4×5 Matrix{Float32}:
0.0736724 0.0736724 0.0736724 0.0736724 0.0736724
1.36921 1.36921 1.36921 1.36921 1.36921
-0.666526 -0.666526 -0.666526 -0.666526 -0.666526
0.597343 0.597343 0.597343 0.597343 0.597343
환경
- OS: Windows11
- Version: Julia 1.10.0, Flux v0.14.15