簡體   English   中英

Keras 極高的損失,不會隨着每個 epoch 減少

[英]Keras extremely high loss, not decreasing with each epoch

我正在使用 Keras 構建和訓練循環神經網絡。

from keras.models import Sequential
from keras.layers.core import Dense, Activation, Masking
from keras.layers.recurrent import LSTM

#build and train model
in_dimension = 3
hidden_neurons = 300
out_dimension = 2

model = Sequential()
model.add(Masking([0,0,0], input_shape=(max_sequence_length, in_dimension)))
model.add(LSTM(hidden_neurons, return_sequences=True, input_shape=(max_sequence_length, in_dimension)))
model.add(LSTM(hidden_neurons, return_sequences=False))
model.add(Dense(out_dimension))
model.add(Activation('softmax'))

model.compile(loss="categorical_crossentropy", optimizer="rmsprop")
model.fit(padded_training_seqs, training_final_steps, nb_epoch=5, batch_size=1)

padded_training_seqs是一個 [latitude, longitude, temperature] 的序列數組,全部填充到相同的長度,值為 [0,0,0]。 當我訓練這個網絡時,第一個 epoch 給了我大約 63 的損失,並且在更多 epoch 之后增加 這導致稍后在代碼中調用model.predict以提供完全脫離訓練值的值。 例如,每個序列中的大部分訓練值都在[40, 40, 20]左右,但 RNN 輸出的值始終在[0.4, 0.5]左右,這讓我認為掩蔽層有問題。

訓練 X ( padded_training_seqs ) 數據看起來像這樣(只是更大):

[
[[43.103, 27.092, 19.078], [43.496, 26.746, 19.198], [43.487, 27.363, 19.092], [44.107, 27.779, 18.487], [44.529, 27.888, 17.768]], 
[[44.538, 27.901, 17.756], [44.663, 28.073, 17.524], [44.623, 27.83, 17.401], [44.68, 28.034, 17.601], [0,0,0]],
[[47.236, 31.43, 13.905], [47.378, 31.148, 13.562], [0,0,0], [0,0,0], [0,0,0]]
]

訓練 Y ( training_final_steps ) 數據如下所示:

[
[44.652, 39.649], [37.362, 54.106], [37.115, 57.66501]
]

我有點確定你在濫用 Keras 的遮罩層。 查看此處的文檔以獲取更多詳細信息。

嘗試使用遮罩層,例如:

model.add(Masking(0, input_shape=(max_sequence_length, in_dimension)))

因為我相信它只需要時間步維度中的掩碼值,而不是整個時間維度和值(即[0,0,0])。

祝你好運。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM