Я новичок в машинном обучении и пытаюсь внедрить классификатор шагов по времени в кератах. В настоящее время у меня есть 45 образцов 6-секундных аудиоклипов, которые я извлекаю из функций и выравниваю каждый шаг по времени для двоичного класса (0 или 1). Мои фигуры выглядят следующим образом:
X_train.shape = (45,259,768)
Y_train.shape = (45,259,1)
Мое число 0 намного больше моего числа 1, и поэтому я использую sklearn и compute_sample_weights для получения матрицы весов выборки для каждого временного шага и каждой выборки сформа:
sample_weights.shape = (45,259)
Вот моя модель:
epochs = 25
model = Sequential()
model.add(Bidirectional(LSTM(units=25,input_shape=(259,768),return_sequences=True)))
model.add(Bidirectional(LSTM(units=25,return_sequences=True)))
model.add(TimeDistributed(Dense(2, activation='sigmoid')))
model.compile(optimizer='rmsprop',
loss='binary_crossentropy',sample_weight_mode="temporal",
metrics=['categorical_accuracy','binary_accuracy','mse','mae'])
model.fit(x=X_train,y=Y_train,epochs=epochs,batch_size=512,validation_split=0.3,sample_weight=sample_weights)
Однако я получаю сообщение об ошибке:
ValueError: Найден массив sample_weight сформа (45, 259). Чтобы использовать веса выборки по временным шагам, вы должны указать sample_weight_mode = "temporal" в compile (). Если вы просто хотите использовать весовые коэффициенты выборки, убедитесь, что ваш массив sample_weight имеет значение 1D.
У кого-нибудь есть исправления для этого ?? Как видите, я указал sample_weight_mode = 'temporal', и я считаю, что мои фигуры правильные, но я не уверен.