如何加速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)))
损失也按整批计算。
我正在构建一个自动编码器,并验证模型的进度 - 我在每个时期之后计算 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)))
损失也按整批计算。