Следующий код предназначен для обучения модели нейронной сети данного набора данных (50 000 выборок, 64 dim).
from keras import Sequential
from keras.layers import Dense
from keras.optimizers import Adam
X, y = process_dataset()
model = Sequential([
Dense(16, input_dim=X.shape[1], activation='relu'),
Dense(16, activation='relu'),
Dense(1, activation='sigmoid')
])
'''
Compile the Model
'''
model.compile(loss='binary_crossentropy', optimizer=Adam(lr=0.01), metrics=['accuracy'])
'''
Fit the Model
'''
model.fit(X, y, shuffle=True, epochs=1000, batch_size=200, validation_split=0.2, verbose=2)
Вначале вы можете видеть ниже, что val_loss
уменьшается отодна эпоха к другой очень хорошо.
Epoch 82/1000
- 0s - loss: 0.2036 - acc: 0.9144 - val_loss: 0.2400 - val_acc: 0.8885
Epoch 83/1000
- 0s - loss: 0.2036 - acc: 0.9146 - val_loss: 0.2375 - val_acc: 0.8901
Когда модель занимает много эпох, изменение потерь становится таким маленьким, особенно когда количество эпох увеличивается.
Epoch 455/1000
- 0s - loss: 0.0903 - acc: 0.9630 - val_loss: 0.1317 - val_acc: 0.9417
Epoch 456/1000
- 0s - loss: 0.0913 - acc: 0.9628 - val_loss: 0.1329 - val_acc: 0.9443
Пожалуйста, у меня два вопроса:
- Что означает это явление?т. е. потери начинают очень хорошо уменьшаться в начале, но не сильно уменьшаются к тому времени, когда тренировочные эпохи занимают много итераций.
- Какое возможное решение для этого?
Спасибо,