私はKerasで表情認識に取り組んでいます。畳み込みニューラルネットワークモデルアーキテクチャ
私は72000イメージのデータセットを持っています。私はの列をの80%、の10%、検証との10%をテストに使用しています。
すべての画像はグレースケールモードで48 x 48です。
私のモデルのアーキテクチャは、このようなものです:
model = Sequential()
model.add(Conv2D(64, 5, 5, border_mode='valid', input_shape=(img_rows, img_cols, 1)))
model.add(PReLU(init='zero', weights=None))
model.add(ZeroPadding2D(padding=(2, 2), dim_ordering='tf'))
model.add(MaxPooling2D(pool_size=(5, 5),strides=(2, 2)))
model.add(ZeroPadding2D(padding=(1, 1), dim_ordering='tf'))
model.add(Conv2D(64, 3, 3))
model.add(PReLU(init='zero', weights=None))
model.add(ZeroPadding2D(padding=(1, 1), dim_ordering='tf'))
model.add(Conv2D(64, 3, 3))
model.add(PReLU(init='zero', weights=None))
model.add(MaxPooling2D(pool_size=(3, 3),strides=(2, 2)))
model.add(ZeroPadding2D(padding=(1, 1), dim_ordering='tf'))
model.add(Conv2D(128, 3, 3))
model.add(PReLU(init='zero', weights=None))
model.add(ZeroPadding2D(padding=(1, 1), dim_ordering='tf'))
model.add(Conv2D(128, 3, 3))
model.add(PReLU(init='zero', weights=None))
model.add(ZeroPadding2D(padding=(1, 1), dim_ordering='tf'))
model.add(MaxPooling2D(pool_size=(3, 3),strides=(2, 2)))
model.add(Flatten())
model.add(Dense(1024))
model.add(PReLU(init='zero', weights=None))
model.add(Dropout(0.2))
model.add(Dense(1024))
model.add(PReLU(init='zero', weights=None))
model.add(Dropout(0.2))
model.add(Dense(7))
model.add(Activation('softmax'))
ada = Adadelta(lr=0.1, rho=0.95, epsilon=1e-08)
私はいくつかの質問を持っている:
1 /層の数とその最適なパラメータ(たたみ込み、マックス・プーリング、ドロップアウトなど)を選択する方法最高のパフォーマンス(精度)を提供する、私は何に基づいて意味ですか?
2 /パラメータの用語(カーネルとフィルタのサイズ、ストライドなど)の各層の関係は何ですか?
3 /私が言ったように、画像は48 x 48グレースケールモードです。いいですか?パフォーマンスに影響しますか?私のモデルアーキテクチャはこの画像でうまく動作しますか?より大きな画像や色付きの画像を使用すると、パフォーマンスが向上しますか?
質問2の回答はありますか?ありがとう –
これを見てください:https://stackoverflow.com/questions/42240489/in-what-ways-are-the-output-of-neural-network-layers-useful?rq=1 - それは素敵ですあなたが何を考えているかの説明。 – OZ13
ありがとうございます。 –