OutMaps = out channel という意味でよろしいですね?
隠れ層のチャネル数は、どのくらいにすべきという指針は基本的にありません。参考にしたいモデルを真似て、適当に試行錯誤するのが正しい姿です。2のN乗の値にすることが常識ですが、根拠はありません。
一般論としては、チャネルを増やすと表現力が増しますが、オーバーフィッティングの可能性を増やします。よって、最適値は、対象となる問題やデータに大きく依存します。試行錯誤での調整が必要なエンジニアリング領域です。
最適化を試みるのでしたら、ハイパーパラメータの1つとして設定して、Optunaなどのハイパーパラメータチューニングのしくみで、最適探索してみるとよいでしょう。
以下は線形層の例ですが、Conv層でも同様です。このように、外部パラメータで層を動的に構成できるようにしておくと、ハイパーパラメータチューニングで最適な(と思われる)層構成が探索可能です。中間層のチャネルだけでなく、層の深さや、BNを入れるかどうか、Dropoutの比率など、いろいろな要素を一度に最適化します。
(layers_designは辞書形式です)
Pyhon
1def Net(*, input_dim, output_dim, layers_design=None):
2 layers = []
3 for i, design in enumerate(layers_design):
4 if i == 0:
5 layers.append(Dense(design['channels'], input_dim=input_dim))
6 else:
7 layers.append(Dense(design['channels']))
8 if design.get('enable_bn'):
9 layers.append(BatchNormalization())
10 layers.append(ReLU())
11 layers.append(Dropout(design.get('dropout_rate', 0)))
12 layers.append(Dense(output_dim))
13 return Sequential(layers)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/30 03:07