画像分類問題の畳み込みニューラルネットワークの高密度レイヤーのユニット数を選択するにはどうすればよいですか?

サバンナマディソン
from keras import layers
from keras import models
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu',
input_shape=(150, 150, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
model.add(layers.Dense(512, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))

画像を猫または犬として分類する際のバイナリ分類問題のコードを読んでいる間、Denseレイヤーでは512ユニットを使用しました。彼らはどうやってそれを思いついたのですか?Denseレイヤーのユニット数を取得する式はありますか?通常、特徴が多い場合は、密層で多数のユニットを選択しますが、ここで特徴を識別するにはどうすればよいですか?出力の密層には、バイナリ分類問題として1つのユニットがあるため、出力は次のようになります。シグモイド関数による0または1。

ジェリーP

CNNでの私の経験は、最初は単純なモデルから始めて、そのパフォーマンスを評価することです。満足のいくレベルのトレーニングと検証の精度を達成したら、そこで停止します。モデルを複雑にする前に、学習率などのハイパーパラメーターを調整してパフォーマンスを向上させてみてください。調整可能な学習率を使用すると、モデルのパフォーマンスを向上させるのに役立つことがわかりました。この目的には、KerasコールバックReduceLROnPlateauを使用します。検証の精度を監視し、指定されたエポック数後に改善されない場合は学習率を下げるように設定します。ドキュメントはこちらです。また、KerasコールバックModelCheckpointを使用して、検証損失が最小のモデルを保存します。ドキュメントはこちらです。これらの方法で目的のレベルのトレーニング精度が得られない場合は、高密度レイヤーにノードを追加するか、高密度レイヤーを追加して、モデルの複雑さを増すことができます。モデルのトレーニング精度は高いが検証精度が低い場合は、モデルが過剰適合している可能性があります。この場合、ドロップアウトレイヤーを追加します。ドキュメントはこちらです。モデルをさらに複雑にすることの問題は、モデルが過剰にフィットする傾向があることです。したがって、密なレイヤーのノードを増やすか、密なレイヤーを追加して検証の精度が低い場合は、ドロップアウトを追加する必要があります。さらに、レギュラライザーのように過剰適合を制御するための代替アプローチを検討することもできます。そのためのドキュメントはこちらです。あなたの特定の例では、高密度レイヤーに必要なノードがもっとあると思います。まず、64ノードのようなものを試してください。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ