Как ускорить расчет потерь, который делается один за другим - PullRequest
0 голосов
/ 30 января 2020

Я строю авто-кодер и проверяю прогресс модели - я вычисляю MSE и MAE после каждой эпохи, для каждой записи в наборе проверки:

for validation_sample in x_pred:
   prediction = autoencoder.predict(validation_sample)
   current_validation_mae.append(keras.backend.eval(keras.losses.mean_absolute_error(validation_sample, prediction)))
   current_validation_mse.append(keras.backend.eval(keras.losses.mean_squared_error(validation_sample, prediction)))

После этого я беру это массив a получить реальный MAE / MSE путем деления его на num выборок при проверке.

Мои данные - это данные генной экспрессии. 1 образец имеет 17000 объектов и 1 точка данных для каждой функции. Всего 5000 образцов.

Производительность при использовании проверки 10 образцов (на суперкомпьютере):

Прогноз создан: 0,019748687744140625 секунд.

MAE заняло: 1.1507933139801025 секунд.

MSE заняло: 1.1251187324523926 секунд.

Что можно улучшить?

1 Ответ

0 голосов
/ 03 февраля 2020

Оказалось, что .predit () действительно возвращает ту же форму, что и входные данные, поэтому нет необходимости в l oop it:

        predictions = autoencoder.predict(x_pred)
        current_validation_mae = np.mean(keras.backend.eval(keras.losses.mean_absolute_error(x_pred, predictions)))
        current_validation_mse = np.mean(keras.backend.eval(keras.losses.mean_squared_error(x_pred, predictions)))

Потери также рассчитываются для всей партии.

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