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
什麼是您的目標的統計數據。你可以繪製直方圖嗎? –