我正在尝试在可变长度序列上训练LSTM。为此,我将X和y传递给生成器。
这可以编译,但是问题是我使用MSE作为损失函数,Keras正在计算整个序列的平均MSE,我希望它跨时间步长进行计算。例如,
y_pred = np.array([np.array([.1, .2]), np.array([.1, .2, .4])])
y_true = np.array([np.array([0, 0]), np.array([0, 0, 0])])
Keras会将MSE损失计算为0.0475 = (1/2)*((.1**2 +.2**2)*(1/2)+(.1**2 +.2**2+.4**2)*(1/3))
,但我希望它计算0.052 = (1/5)*(.1**2 +.2**2+.1**2 +.2**2+.4**2)
,并根据其包含的时间步长有效地对每个序列进行加权。
我已经尝试了一些前进的道路,但是似乎都没有。我宁愿继续使用生成器,而不要使用填充和遮罩,但是如果绝对必须发生填充,那就这样吧。