Kaybolan gradyan sorunu
Diğer olası gradyan sorunu, gradyanlar kaybolduğunda ya da sıfıra yaklaştığında ortaya çıkar. Bu, tespit etmek kolay olmadığı için çözmesi çok daha zordur. Kayıp fonksiyonu her adımda iyileşmiyorsa, bunun nedeni gradyanların sıfıra gidip ağırlıkları güncellememesi mi? Yoksa modelin öğrenememesi mi?
Bu sorun, özellikle uzun bellek gerektiğinde (uzun cümleler olduğunda) RNN modellerinde daha sık görülür.
Bu egzersizde, daha uzun cümlelerin seçildiği IMDB verisi üzerinde bu sorunu gözlemleyeceksin. Veriler X ve y değişkenlerine, ayrıca Sequential, SimpleRNN, Dense sınıflarına ve matplotlib.pyplot'a plt takma adıyla yüklenmiştir. Model 100 epoch boyunca önceden eğitildi; ağırlıkları ve geçmişi model_weights.h5 dosyasında ve history değişkeninde saklanmaktadır.
Bu egzersiz
Keras ile Dil Modellemesi için Yinelenen Sinir Ağları (RNN)
kursunun bir parçasıdırEgzersiz talimatları
- Modele bir
SimpleRNNkatmanı ekle. - Önceden eğitilmiş ağırlıkları
.load_weights()yöntemiyle modele yükle. - Eğitim verisinin doğruluğunu,
'acc'niteliğinde bulunan değeri grafiğe ekle. - Grafiği
.show()yöntemiyle göster.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
# Create the model
model = Sequential()
model.add(____(units=600, input_shape=(None, 1)))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='sgd', metrics=['accuracy'])
# Load pre-trained weights
model.____('model_weights.h5')
# Plot the accuracy x epoch graph
plt.plot(history.history[____])
plt.plot(history.history['val_acc'])
plt.legend(['train', 'val'], loc='upper left')
plt.____()