3维时间序列输出的keras均方误差损失函数

mas*_*som 4 python mse keras recurrent-neural-network

我想验证我的损失函数,因为我读到 keras 中的 mse 损失函数存在问题。考虑 keras 中的 lstm 模型将 3d 时间序列预测为多目标 (y1, y2, y3)。假设一批输出序列的形状为 (10, 31, 1),下面的损失函数是否会取预测输出和真实输出之间的平方差,然后取 310 个样本的平均值,从而得到单个损失值?如果 3 个输出连接为 (10, 31, 3),此操作将如何发生

def mse(y_true, y_pred):
            return keras.backend.mean(keras.backend.square(y_pred - y_true), axis=1)
Run Code Online (Sandbox Code Playgroud)

gis*_*ang 5

如果你想得到单个损失值,则不需要设置axis

import keras.backend as K

def mse(y_true, y_pred):
    return K.mean(K.square(y_pred - y_true))

y_true = K.random_normal(shape=(10,31,3))
y_pred = K.random_normal(shape=(10,31,3))

loss = mse(y_true, y_pred)
print(K.eval(loss))

# print
2.0196152
Run Code Online (Sandbox Code Playgroud)