如何加速loss计算,一一做

How to speedup loss calculation, which is done one by one

我正在构建一个自动编码器,并验证模型的进度 - 我在每个时期之后计算 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)))

之后,我将该数组除以验证中的 num 个样本,得到真正的 MAE/MSE。

我的数据是基因表达数据。 1 个样本有 17000 个特征,每个特征有 1 个数据点。总共 5000 个样本。

使用 10 个样本验证时的性能(在超级计算机上):

Prediction created in: 0.019748687744140625 seconds.

MAE took: 1.1507933139801025 seconds.

MSE took: 1.1251187324523926 seconds.

有什么可以改进的?

事实证明 .predit() 确实 returns 与输入相同的形状,因此无需循环它:

        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)))

损失也按整批计算。