meine Frage ist ziemlich eng verwandt mit this question aber geht auch darüber hinaus.Keras: LSTM mit Klassengewichten
Ich versuche, die folgenden LSTM in Keras zu implementieren, wo
- die Anzahl der Zeitschritte
nb_tsteps=10
- die Anzahl des Eingangs seines Feature ist
nb_feat=40
- die Anzahl der LSTM Zellen in jedem Zeitschritt ist
120
- Auf die LSTM-Schicht folgen die TimeDistributedDense-Schichten
Von der Frage oben I verwiesen verstehen, dass ich die Eingabedaten als
nb_samples, 10, 40
wo ich nb_samples
vorlegen muß durch Walzen ein Fenster der Länge nb_tsteps=10
über die ursprüngliche Zeitreihe der Form (5932720, 40)
erhalten. Der Code ist daher
model = Sequential()
model.add(LSTM(120, input_shape=(X_train.shape[1], X_train.shape[2]),
return_sequences=True, consume_less='gpu'))
model.add(TimeDistributed(Dense(50, activation='relu')))
model.add(Dropout(0.2))
model.add(TimeDistributed(Dense(20, activation='relu')))
model.add(Dropout(0.2))
model.add(TimeDistributed(Dense(10, activation='relu')))
model.add(Dropout(0.2))
model.add(TimeDistributed(Dense(3, activation='relu')))
model.add(TimeDistributed(Dense(1, activation='sigmoid')))
Nun zu meiner Frage (vorausgesetzt, die oben richtig ist bis jetzt): Die binären Antworten (0/1) sind stark unausgewogen und ich brauche einen class_weight
Wörterbuch wie cw = {0: 1, 1: 25}
zu model.fit()
passieren. Allerdings bekomme ich eine Ausnahme class_weight not supported for 3+ dimensional targets
. Dies liegt daran, dass ich die Antwortdaten als (nb_samples, 1, 1)
präsentiere. Wenn ich es in ein 2D-Array umformen (nb_samples, 1)
bekomme ich die Ausnahme Error when checking model target: expected timedistributed_5 to have 3 dimensions, but got array with shape (5932720, 1)
.
Vielen Dank für jede Hilfe!
Ich verstehe nicht, warum sample_weight (mit sample_weight_mode = "temporal") relevant ist. Wir sprechen hier von Klassengewichten, nicht von Beispielgewichten, oder? sample_weight_mode = "temporal" weist jedem Sample in jedem Zeitschritt eine Gewichtung zu, hat aber nichts mit Klassenbezeichnungen zu tun? – ymeng