...
print('Build model...')
model = Sequential()
model.add(Embedding(max_features, 128))
model.add(LSTM(size, return_sequences=True, dropout_W=0.2 dropout_U=0.2))
model.add(GlobalAveragePooling1D())
model.add(Dense(1))
model.add(Activation('sigmoid'))
....
をサポートマスキングとプール私は緻密層に、この平均値または最大ベクトルを与える前にLSTM層を形成した後、試料中のすべての時間ステップのためのベクトルの平均値や最大値を取ることができるようにする必要がありますケラスで平均または最大のKeras
私はtimedistributedmerge
がこれを行うことができましたが、廃止されました。 return_sequences=True
を使用すると、LSTM層の後のサンプル内のすべてのタイムステップのベクトルを取得できます。しかし、GlobalAveragePooling1D()
はマスキングと互換性がなく、すべてのタイムステップを考慮しますが、マスクされていないタイムステップだけが必要です。
私はLambda
層を推奨する投稿を見ましたが、これらもマスキングを考慮していません。どんな助けもありがとう。
Kerasでは、 'x 'のマスクされた値がゼロに等しいとは限りません。したがって、この実装は間違った結果をもたらします。 – pir
'Masking'と' Embedding'層によって導入されたマスク自体はバイナリです。もちろん、 'compute_mask'を実装するレイヤーはいつも異なっていても構いませんが、これは私が見る限りケラス自体では起こりません。 – nemo
はい、マスクはバイナリです。それは私が言っていることではありません:) – pir