2
Kerasで「1対多」および「多対多」のシーケンス予測を実装する方法は?
1対多(たとえば、単一の画像の分類)と多対多(たとえば、画像シーケンスの分類)のシーケンスのラベル付けについて、Kerasコーディングの違いを解釈するのに苦労しています。2種類のコードが頻繁に表示されます。 タイプ1では、TimeDistributedは次のように適用されません。 model=Sequential() model.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1], border_mode="valid", input_shape=[1, 56,14])) model.add(Activation("relu")) model.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1])) model.add(Activation("relu")) model.add(MaxPooling2D(pool_size=pool_size)) model.add(Reshape((56*14,))) model.add(Dropout(0.25)) model.add(LSTM(5)) model.add(Dense(50)) model.add(Dense(nb_classes)) model.add(Activation("softmax")) タイプ2は、TimeDistributedが次のように適用される場所です。 model = Sequential() model.add(InputLayer(input_shape=(5, 224, 224, 3))) model.add(TimeDistributed(Convolution2D(64, (3, 3)))) model.add(TimeDistributed(MaxPooling2D((2,2), strides=(2,2)))) model.add(LSTM(10)) model.add(Dense(3)) 私の質問は: タイプ1は1対多の種類であり、タイプ2は多対多の種類であるという私の仮定は正しいですか?それともTimeDistributed、この側面に関連性はありませんか? 1対多または多対多のいずれの場合も、最後の密な層は1ノードの「長い」(順番に1つの値のみを放出する)と想定され 、前の反復層は 1 対多の数を決定する責任があります。放出する値?または、最後の高密度層はN個のノードで構成されているはずN=max sequence lengthです。もしそうなら、 N個の並列「バニラ」推定器を 使用して複数の出力を持つ同様の入力を生成できる場合、ここでRNN を使用するポイントは何ですか? RNNのタイムステップ数を定義する方法は?それはどういうわけか 出力シーケンスの長さと相関していますか、それとも単に 調整するハイパーパラメータですか? …