logo

줄리아 Flux에서 신경망 훈련모드, 테스트모드 설정하는 방법 📂머신러닝

줄리아 Flux에서 신경망 훈련모드, 테스트모드 설정하는 방법

설명

신경망의 구조 중에서 훈련과정과 테스트과정에서 다르게 작동해야하는 부분이 있다. 예를 들어, 드롭 아웃은 훈련 중에는 적용되어야하지만, 훈련이 끝난 뒤 테스트 중이나 실제 사용 환경에서는 적용되어서는 안된다. 이런 경우에는 훈련모드와 테스트모드를 구분하여 사용해야한다.

코드

신경망을 훈련 모드로 전환하는 함수는 trainmode!, 테스트 모드로 전환하는 함수는 testmode!이다. 각 함수에 의해서 DropoutBatchNorm 레이어 등의 활성화 여부가 변경된다.

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