Точность проверки Keras равна 0 и остается постоянной в течение всего обучения - PullRequest
0 голосов
/ 14 февраля 2019

В настоящее время я делаю анализ временных рядов с использованием Tensorflow / Keras в Python.Общая модель LSTM выглядит следующим образом:

model = keras.models.Sequential()
model.add(keras.layers.LSTM(25, input_shape = (1,1), activation =    'relu', dropout = 0.2, return_sequences = False))
model.add(keras.layers.Dense(1))
model.compile(optimizer = 'adam', loss = 'mean_squared_error', metrics=['acc'])
tensorboard = keras.callbacks.TensorBoard(log_dir="logs/{}".format(time()))
es = keras.callbacks.EarlyStopping(monitor='val_acc', mode='max', verbose=1, patience=50)
mc = keras.callbacks.ModelCheckpoint('/home/sukriti/best_model.h5',   monitor='val_loss', mode='min', save_best_only=True)
history = model.fit(trainX_3d, trainY_1d, epochs=50, batch_size=10, verbose=2, validation_data = (testX_3d, testY_1d), callbacks=[mc, es, tensorboard])

У меня следующий результат:

Train on 14015 samples, validate on 3503 samples
Epoch 1/50
- 3s - loss: 0.0222 - acc: 7.1352e-05 - val_loss: 0.0064 - val_acc:  0.0000e+00
Epoch 2/50
- 2s - loss: 0.0120 - acc: 7.1352e-05 - val_loss: 0.0054 - val_acc: 0.0000e+00
Epoch 3/50
- 2s - loss: 0.0108 - acc: 7.1352e-05 - val_loss: 0.0047 - val_acc: 0.0000e+00

Теперь val_acc остается неизменным.Это нормально?что это значит?

Большое спасибо заранее.

1 Ответ

0 голосов
/ 14 февраля 2019

Как обозначено loss = 'mean_squared_error', вы находитесь в параметре регрессия , где точность не имеет смысла (это имеет смысл только в классификации проблем).

К сожалению, Keras не будет «защищать» вас в таком случае, настаивая на вычислениях и сообщая о «точности», несмотря на то, что это бессмысленно и не подходит для вашей проблемы - см. Мой ответ в Какая функция определяет точность в Керасе, когда потеря представляет собой среднеквадратическую ошибку (MSE)?

Вам следует просто удалить metrics=['acc'] из компиляции вашей модели и не беспокоиться - в настройках регрессии, самой MSEможет (и обычно делает) также служить метрикой производительности.

...