ПочатиПочніть безкоштовно

Проблема зникання градієнта

Інша можлива проблема з градієнтами — коли вони зникають, тобто прямують до нуля. Це значно складніше виправити, бо проблему важче виявити. Якщо функція втрат не поліпшується на кожному кроці, це тому, що градієнти стали нульовими і ваги не оновилися? Чи тому, що модель не здатна навчатися?

Ця проблема частіше трапляється в моделях RNN, коли потрібна довга пам'ять (дуже довгі речення).

У цій вправі ви спостерігатимете цю проблему на даних IMDB з обраними довшими реченнями. Дані завантажено у змінні X та y, а також імпортовано класи Sequential, SimpleRNN, Dense і matplotlib.pyplot як plt. Модель була попередньо натренована протягом 100 епох, її ваги та історію збережено у файлі model_weights.h5 та змінній history.

Ця вправа є частиною курсу

Recurrent Neural Networks (RNNs) для моделювання мови з Keras

Переглянути курс

Інструкції до вправи

  • Додайте шар SimpleRNN до моделі.
  • Завантажте попередньо натреновані ваги в модель за допомогою методу .load_weights().
  • Додайте до графіка точність на тренувальних даних, доступну в атрибуті 'acc'.
  • Відобразьте графік за допомогою методу .show().

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

# 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.____()
Редагувати та запускати код