Я хотел бы отобразить все различные функции потерь, доступные в Керасе. Поэтому я создал фрейм данных и вызвал функцию потерь. Но как мне вернуть значения из тензора?
import numpy as np
import pandas as pd
from keras import losses
points = 100
df = pd.DataFrame({"error": np.linspace(-3,3,points)})
df["mean_squared_error"] = losses.mean_squared_error(np.zeros(points), df["error"])
df.plot(x = "error")
Функции потерь в Keras возвращают объект Tensor. Вам нужно оценить этот объект Tensor с помощью функции eval()
из серверной части, чтобы получить его фактическое значение. Кроме того, если вы посмотрите на определение функций потерь в Keras, скажем mean_squared_error()
, вы поймете, что есть операция K.mean()
, которая берет среднее значение по последней оси, которая является выходной осью (не путайте это с пакетом или выборкой ось). Следовательно, вам может потребоваться передать истинные и прогнозируемые значения в форме (n_samples, n_outputs)
, следовательно, изменения в следующем коде:
import numpy as np
import pandas as pd
from keras import losses
from keras import backend as K
points = 100
df = pd.DataFrame({"error": np.linspace(-3,3,points)})
mse_loss = losses.mean_squared_error(np.zeros((points,1)), df["error"].values.reshape(-1,1))
df["mean_squared_error"] = K.eval(mse_loss)
df.plot(x = "error")
Вот выходной график: