मैंने एक बहुपरत LSTM बनाने के लिए इस कोड को GPU के साथ google colab में ट्यून किया है। यह समय श्रृंखला भविष्यवाणी के लिए है।

from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, LSTM, LSTM, BatchNormalization
from keras.optimizers import SGD
model = Sequential()
model.add(LSTM(units = 50, activation = 'relu', return_sequences=True, input_shape= 
(1,len(FeaturesDataFrame.columns))))
model.add(Dropout(0.2))
model.add(LSTM(3, return_sequences=False))
model.add(Dense(1))
opt = SGD(lr=0.01, momentum=0.9, clipvalue=5.0)
model.compile(loss='mean_squared_error', optimizer=opt)

ध्यान दें कि मैंने ग्रेडिएंट-क्लिपिंग का उपयोग किया है। लेकिन फिर भी, जब मैं इस मॉडल को प्रशिक्षित करता हूं, तो यह प्रशिक्षण हानि के रूप में नैन लौटाता है:

history = model.fit(X_t_reshaped, train_labels, epochs=20, batch_size=96, verbose=2)

यह परिणाम है

Epoch 1/20
316/316 - 2s - loss: nan 
Epoch 2/20
316/316 - 1s - loss: nan 
Epoch 3/20
316/316 - 1s - loss: nan
Epoch 4/20
316/316 - 1s - loss: nan
Epoch 5/20
316/316 - 1s - loss: nan
Epoch 6/20
316/316 - 1s - loss: nan
Epoch 7/20
316/316 - 1s - loss: nan 
Epoch 8/20
316/316 - 1s - loss: nan 
Epoch 9/20
316/316 - 1s - loss: nan 
Epoch 10/20 
316/316 - 1s - loss: nan
Epoch 11/20
316/316 - 1s - loss: nan
Epoch 12/20
316/316 - 1s - loss: nan
Epoch 13/20
316/316 - 1s - loss: nan
Epoch 14/20
316/316 - 1s - loss: nan
Epoch 15/20
316/316 - 1s - loss: nan 
Epoch 16/20
316/316 - 1s - loss: nan
Epoch 17/20
316/316 - 1s - loss: nan
Epoch 18/20
316/316 - 1s - loss: nan
Epoch 19/20
316/316 - 1s - loss: nan
Epoch 20/20
316/316 - 1s - loss: nan
0
HoOman 17 मार्च 2021, 08:40
1
1e-4 या 1e-5 जैसी बहुत कम सीखने की दर का प्रयास करें, और देखें कि क्या यह मदद करता है। यदि ऐसा है, तो आप यह देखने के लिए LR और अन्य मापदंडों को बदलने की कोशिश कर सकते हैं कि क्या आप एक विस्फोट से बच सकते हैं।
 – 
hobbs
17 मार्च 2021, 08:48
1
आप ReLU का उपयोग क्यों कर रहे हैं और क्या आपने किसी तरह इनपुट्स को स्केल किया है?
 – 
Mustafa Aydın
17 मार्च 2021, 08:51
मैंने देखा है कि यह सक्रियता प्रचलित है। क्या आपके पास समय-श्रृंखला पूर्वानुमान आवेदन के लिए कोई सिफारिश है?
 – 
HoOman
17 मार्च 2021, 11:54

1 उत्तर

सबसे बढ़िया उत्तर

मैं Keras की तुलना में PyTorch के साथ काम करने से अधिक परिचित हूँ। हालाँकि अभी भी कुछ चीजें हैं जो मैं करने की सलाह दूंगा:

  1. अपना डेटा जांचें। सुनिश्चित करें कि आपके द्वारा अपने मॉडल में पास किए गए डेटा में कोई गुम या शून्य मान नहीं हैं। यह सबसे संभावित अपराधी है। एक एकल शून्य मान हानि को NaN होने का कारण बनेगा।

  2. आप सीखने की दर (0.001 या इससे भी छोटी) को कम करने और/या ग्रेडिएंट क्लिपिंग को हटाने का प्रयास कर सकते हैं। मेरे पास वास्तव में पहले से NaN हानि का कारण होने वाला ग्रेडिएंट योगदान है।

  3. अपने डेटा को स्केल करने का प्रयास करें (हालांकि अनस्केल्ड डेटा आमतौर पर NaN के नुकसान के बजाय अनंत नुकसान का कारण होगा)। sklearn में StandardScaler या किसी अन्य स्केलर का उपयोग करें।

यदि वह सब विफल हो जाता है तो मैं मॉडल में कुछ बहुत ही सरल डमी डेटा पास करने की कोशिश करता हूं और देखता हूं कि समस्या बनी रहती है या नहीं। तब आपको पता चलेगा कि यह एक कोड समस्या है या डेटा समस्या है। आशा है कि यह मदद करता है और यदि आपके पास प्रश्न पूछने के लिए स्वतंत्र महसूस होता है।

2
igodfried 17 मार्च 2021, 08:53
धन्यवाद। यह प्रशिक्षण डेटा में नेन मूल्यों की उपस्थिति के कारण था
 – 
HoOman
17 मार्च 2021, 11:55