другой результат mse для тренировочного набора - PullRequest
0 голосов
/ 05 ноября 2018

Я получаю разные результаты для mse. Во время обучения я получаю 0,296 после моей последней тренировочной эпохи, и когда я оцениваю свою модель, я получаю 0,112. Кто-нибудь знает, почему это так?

Вот код:

model = Sequential()
model.add(Dropout(0.2))
model.add(LSTM(100, return_sequences=True,batch_input_shape=(batch_size,look_back,dim_x)))
model.add(Dropout(0.2))
model.add(LSTM(150,return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(100,return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(50,return_sequences=False))
model.add(Dropout(0.2))
model.add(Dense(1, activation='linear'))

model.compile(loss='mean_squared_error', optimizer='adam')
history=model.fit(x_train_r, y_train_r, validation_data=(x_test_r, y_test_r),\
                  epochs=epochs, batch_size=batch_size, callbacks=[es])

score_test = model.evaluate(x_test_r, y_test_r,batch_size=batch_size)
score_train = model.evaluate(x_train_r, y_train_r,batch_size=batch_size)

print("Score Training Data:")
print(score_train)

Размер партии и все остается прежним. Кто-нибудь знает, почему я получаю такие разные результаты для mse?

1 Ответ

0 голосов
/ 05 ноября 2018

Причиной несоответствия между тренировочной потерей и потерей, полученной на тренировочных данных после окончания обучения, является наличие слоя Dropout в модели. Это потому, что этот слой имеет различное поведение во время обучения и вывода. Как я уже упоминал в другом ответе , вы можете сделать это поведение либо путем передачи training=True выпадающему вызову, либо используя флаг K.learning_phase() и бэкэнд-функцию.

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