значения predict() равны нулю или NaN

У меня модель ГРУ

      GRU = keras.models.Sequential([keras.layers.GRU(32),
                               keras.layers.Dense(32, activation= 'relu'),
                               keras.layers.Dense(1, activation=None)])
GRU.compile(loss="mae", optimizer="adam")

resultsGRU = GRU.fit_generator(generator = train, validation_data = train, epochs = 3, verbose= 1, shuffle = False)

Если я конвертирую данные поезда в массив numpy, я вижу, что у меня нет нулевых значений или значений Nan (раньше я также опускал значения)

      trainArray= np.array(train)
print(trainArray)

Я скопировал только часть массива, чтобы вы могли видеть значения:

      [[array([[[-0.86286026,  0.51805955,  1.0427724 , ...,  0.27464896,
            0.08823532, -1.1183959 ],
          [-0.3186916 ,  0.00295895,  0.740636  , ...,  0.27464896,
            0.08823532, -1.1304985 ],
          [-0.31057638,  0.00295895,  0.5593542 , ...,  0.27464896,
           -0.5521559 , -1.1183959 ],
          ...,

Если я распечатаю результаты ГРУ

      print(resultsGRU.history.values())

я получил

      dict_values([[0.597104012966156, 0.5652544498443604, 0.5574262142181396], [0.6241905093193054, 0.6183988451957703, 0.6134349703788757]])

Затем я использую прогноз, но значения возвращаются 0

      predictGRU = GRU.predict(test)
print(predictGRU)
      [0. 0. 0. ... 0. 0. 0.]

Затем я сохраняю эту модель и использую ее для API со значениями NaN.

В чем проблема? Как заставить модель предсказывать другое разумное значение?

Я также использую метрики позже

      print(metrics.mean_absolute_error(test, predictGRU))
print(metrics.mean_squared_error(test, predictGRU))
print(metrics.explained_variance_score(test, predictGRU))

И у меня нормальные цифры

      0.6471065
0.50334525
0.23076766729354858

Я не знаю, как исправить это самостоятельно.

0 ответов

Другие вопросы по тегам