Keras model.predict() возвращает один и тот же вывод прогноза для всех значений в тестовых входных данных

Я использую Keras для построения нейронной сети, и модель успешно компилируется, и я нормализовал данные.

однако, когда я использую model.predict(xtest), я получаю одно и то же значение для каждого прогнозируемого вывода

def model_final():
    model = models.Sequential()
    model.add(layers.Dense(64, activation='relu',
                           input_shape=(xtrain.shape[1],),
                          kernel_regularizer = regularizers.l2(0.001)))
    model.add(layers.Dense(64, activation='relu',
                          kernel_regularizer = regularizers.l2(0.001)))
    model.add(layers.Dense(1))
    model.compile(optimizer='rmsprop', loss='mse', metrics=['mae'])
    return model

model = model_final()

model_final = model.fit(xtrain, ytrain, epochs = 100, batch_size = 10, verbose = 0)

model_final_eval = model.evaluate(xtest, ytest)

для которого я получаю следующую среднеквадратичную ошибку и mae:

214/214 [==============================] - 3s 14ms/step
[1.9285373412534785e-06, 0.00061284683733987052]

Затем, когда я использую model.predict(xtest), я получаю следующий вывод:

array([[ 0.0014801],
       [ 0.0014801],
       [ 0.0014801],...

для всех значений в model.predict.

Я предполагаю, что одно и то же прогнозируемое значение для всех значений в наборе данных не может быть правильным.

предложения?

Спасибо!


person Harris2018    schedule 21.05.2018    source источник
comment
Вы уверены, что все входные данные не одинаковы?   -  person InAFlash    schedule 21.05.2018
comment
Соответствуют ли ваши данные этому значению, т. е. содержат ли ваши тестовые данные в основном 0 значений и лишь небольшое количество ненулевых значений, даже нормализация данных не уменьшит смещение в сторону выборки. например если у вас было 100 тыс. точек данных, 99 тыс. из которых были 0, а 1 тыс. были ненулевыми, вы можете достичь точности 99%, предсказав 0   -  person Expired Data    schedule 21.05.2018
comment
@Kalyan - Да, все входы разные   -  person Harris2018    schedule 21.05.2018
comment
@ExpiredData - нулевых значений на самом деле нет, потому что я вставил пропущенные значения. Это относительно небольшой набор данных (всего около 900 записей).   -  person Harris2018    schedule 21.05.2018
comment
проверьте, является ли это той же моделью, на которой обучались. Даже у меня была такая же проблема. В моем файле model.py у меня была активация elu во время обучения, и при прогнозировании я использовал relu в качестве активации, которая вызвала явление. Поэтому при прогнозировании проверьте, совпадают ли все слои со слоями обучающей модели.   -  person thefifthjack005    schedule 22.05.2018
comment
Вы смогли ее решить?   -  person jokol    schedule 26.11.2019


Ответы (1)


model не обучен, вы должны использовать model_final.predict(...)

Вы звоните predict по тому же сценарию? Если нет, возможно, вам придется загрузить вес.

person bleand    schedule 21.05.2018
comment
model_final — это история модели, а не обученная модель. не так ли? - person RDlady; 09.09.2020