logo

Julia Fluxでニューラルネットワークトレーニングモード、テストモードの設定方法 📂機械学習

Julia 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