簡體   English   中英

了解前饋神經網絡輸出

[英]Understanding Feed Forward Neural Network Output

我已經建立了具有3個隱藏層的前饋神經網絡來解決回歸問題。 我用於驗證的指標是MAPE。 以下是模型參數

#Define the model
NN_model = Sequential()

# The Input Layer :
NN_model.add(Dense(128, kernel_initializer='normal',input_dim = X_train.shape[1], activation='relu'))

# The Hidden Layers :
NN_model.add(Dense(256, kernel_initializer='normal',activation='relu'))
NN_model.add(Dense(256, kernel_initializer='normal',activation='relu'))
NN_model.add(Dense(256, kernel_initializer='normal',activation='relu'))

# The Output Layer :
NN_model.add(Dense(1, kernel_initializer='normal',activation='linear'))

# Compile the network :
NN_model.compile(loss='mean_absolute_percentage_error', optimizer='adam', metrics=['mean_absolute_percentage_error'])
##NN_model.compile(loss='mean_absolute_error', optimizer='adam', metrics=['mean_absolute_error'])
NN_model.summary()

示例輸出如下所示

Train on 18000 samples, validate on 4500 samples
Epoch 1/500
18000/18000 [==============================] - 3s 148us/step - loss: 672.5252 - mean_absolute_percentage_error: 672.5252 - val_loss: 29.3799 - val_mean_absolute_percentage_error: 29.3799

Epoch 00001: val_loss improved from inf to 29.37992, saving model to Weights-001--29.37992.hdf5
Epoch 2/500
18000/18000 [==============================] - 2s 133us/step - loss: 739.9019 - mean_absolute_percentage_error: 739.9019 - val_loss: 220.4918 - val_mean_absolute_percentage_error: 220.4918

Epoch 00002: val_loss did not improve from 29.37992
Epoch 3/500
18000/18000 [==============================] - 2s 129us/step - loss: 840.8005 - mean_absolute_percentage_error: 840.8005 - val_loss: 18.5716 - val_mean_absolute_percentage_error: 18.5716

我的問題是,在每個時期,我看到平均絕對百分比誤差和驗證平均絕對百分比誤差。 后者似乎更低,這是我的預期。為什么平均絕對百分比誤差如此不同,並且比驗證平均絕對百分比誤差高得多?

另外,為什么驗證意味着絕對百分比誤差波動這么大?

感謝任何輸入。

您的模型似乎根本無法學習任何東西。 您檢查輸入數據了嗎?

另一個問題可能是梯度太大,導致“沒有收斂行為”。 因此,您的損失只是“隨機”地波動。

因此,請檢查您的訓練數據,嘗試按比例縮放並嘗試使用其他損失函數! 希望能有所幫助。

MAPE可能偏低,因為在輸入值方面沒有太大的差異。

讓我們假裝我們正在討論經典線性回歸,以使事情更容易可視化。 不幸的是,您碰巧在一個不錯的經典S型-inf上進行了線性回歸-從零到一,拐點為0.5,從-infinf

盡最大的努力將是定義為0x+0.5 您在物理上根本無法對所使用的模型做任何改進。 但是,您的MAPE將達到50%,而不是像10000%那樣瘋狂。

當然,該模型完全是垃圾,但是其錯誤僅限於較小的值范圍。

現在,使用DNN會比較麻煩,因為您需要擔心所有這些額外的維度,但這可能是調試模型的不錯方法。

就波動而言,很難說出ATM-您剛剛顯示了前三個時期,它可能仍在努力尋找數據的立足點。 在進行任何診斷之前,我將查看問題是否在繼續培訓期間仍然存在。

暫無
暫無

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

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