1
我目前正在使用Tensorflow后端在Keras中处理多个时间序列相似机器和多个功能的回归问题。在Keras中使用LSTMs进行多变量多时间序列回归的恒定输出值
目标是预测每个时间步的值,这会给出机器的剩余寿命。
我对所有值进行了归一化处理,并将输入和输出填充到所有时间序列的前面,以使其长度最长。 然后我添加了遮罩层来掩盖这些零。
我遇到的问题是网络给我输出变量的常量值。
我已经玩过隐藏的神经元,批处理,激活函数,时代但没有真正改变。 损失缓慢减少,但所有时间步长的输出保持不变。 哦,它有一种时间序列的工作。
对于所有零填充行我得到这样4.88323085e-02
一定的价值(这是很好的我猜?)和所有其他的输出是这样的:
[...
8.72270355e+01, 8.72270355e+01, 8.72270355e+01,
8.72270355e+01, 8.72270355e+01, 8.72270355e+01,
8.72270355e+01, 8.72270355e+01, 8.72270355e+01,
8.72270355e+01, 8.72270355e+01, 8.72270355e+01,
8.72270355e+01, 8.72270355e+01, 8.72270355e+01,
8.72270355e+01, 8.72270355e+01, 8.72270355e+01,
8.72270355e+01, 8.72270355e+01, 8.72270355e+01,
8.72270355e+01, 8.72270355e+01]
我的数据形成这样的:
[n_machines, n_timesteps, n_features]
和输出的样子:
[n_machines, n_timesteps, remaining_life]
我现在的模式是这样的:
model = Sequential()
model.add(Masking(mask_value=0., input_shape=(None, n_features)))
model.add(LSTM(1000, return_sequences = True, unit_forget_bias=True))
model.add(TimeDistributed(Dense(1)))
model.compile(loss="mse", optimizer="adam", metrics=[RMSE])
model.fit(x_train, y_train, validation_data=(x_test, y_test), epochs=100, batch_size=1, shuffle=True)
使用的东西,而不是神经网络是可悲的是不是一种选择,所以我需要做这项工作。 如果有人能帮助我,我会很高兴。
我会尝试增加'batch_size'。 –
@MarcinMożejko我已经尝试了10的批量大小没有帮助。毕竟我只有100个序列。 – hfjn
什么是您的目标的统计数据。你可以绘制直方图吗? –