Получение плоских кривых ошибок при обучении при глубоком обучении с помощью нейронных сетей BP - PullRequest
0 голосов
/ 27 февраля 2019

Я всегда получаю плоские кривые для графиков ошибок при глубоком обучении с помощью обычных нейронных сетей BP.Я использую последовательную модель Keras с оптимизатором Adam.NN дает общую точность 80% как для обучения, так и для тестирования.Кто-нибудь может объяснить, почему кривые ошибок плоские (см. Прилагаемый рисунок)?Также есть ли способ улучшить мои результаты?

def build_model():
  model = keras.Sequential()
  model.add(layers.Dense(128, activation=tf.nn.relu, input_shape=len(normed_train_data.keys())]))
  model.add(layers.Dense(128,activation=tf.nn.relu, input_shape=(1,)))
  model.add(layers.Dense(4))
  model.compile(loss='mean_squared_error', optimizer='Adam',metrics=['mae', 'mse','accuracy'])
  return model

def plot_history(history):
   hist = pd.DataFrame(history.history)
   hist['epoch'] = history.epoch
   plt.figure()
   plt.xlabel('Epoch')
   plt.ylabel('Mean Abs Error [per]')
   plt.plot(hist['epoch'], hist['mean_absolute_error'],label='Train Error')
   plt.plot(hist['epoch'], hist['val_mean_absolute_error'],label = 'Val Error')
   plt.legend()
   plt.ylim([0,200])
   plt.show()

А в основной функции,

model = build_model()
model.summary()
history = model.fit(normed_train_data, train_labels,epochs=EPOCHS,validation_split = 0.2, verbose=0,callbacks=[PrintDot()])
hist = pd.DataFrame(history.history)
hist['epoch'] = history.epoch
plot_history(history)

ошибки:

enter image description here

График ошибок с пониженной скоростью обучения

1 Ответ

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

Трудно оценить, не имея больше информации о ваших данных, можете ли вы поделиться образцом?Но я рискну догадаться, что ваша модель подходит очень быстро.Вещи, которые вы можете попробовать:

  • упрощение модели - попробуйте удалить один слой или использовать меньше единиц для начинающих
  • другой оптимизатор, попробуйте sgd с разными скоростями обучения
  • различные метрики (попробуйте удалить один за другим)
...