Переоснащение предсказания следующего слова
Привет всем, извините, если мой вопрос покажется глупым. Но я пытаюсь создать модель предсказания следующего слова. Но у меня проблема с переоснащением. вот мой код
data = ' '. join(lines)
data=data.lower()
data = data.replace('\n', '').replace('\r', '').replace('\ufeff', '')
translator = str.maketrans(string.punctuation, ' '*len(string.punctuation)) #map punctuation to space
data = data.translate(translator)
tokenizer = RegexpTokenizer('\w+')
words = tokenizer.tokenize(data)
tokenizer = Tokenizer()
tokenizer.fit_on_texts(words)
# saving the tokenizer for predict function.
pickle.dump(tokenizer, open(token_path, 'wb'))
sequence_data = tokenizer.texts_to_sequences([data])[0]
sequence_data[:10]
vocab_size = len(tokenizer.word_index) + 1
sequences = []
for i in range(lengt_sequence, len(sequence_data)):
words = sequence_data[i-lengt_sequence:i+1]
sequences.append(words)
sequences = np.array(sequences)
X = []
y = []
for i in sequences:
X.append(i[0:lengt_sequence])
y.append(i[-1])
X = np.array(X)
y = np.array(y)
model = Sequential()
model.add(Embedding(vocab_size, 50, input_length=lengt_sequence))
model.add(GRU(50, return_sequences=True ))
model.add(Attention(units=50))
model.add(Dense(5, activation='relu'))
model.add(Dense(vocab_size, activation='softmax'))
optimizer=tf.keras.optimizers.RMSprop()#Adam(learning_rate=0.001)
model.compile(loss='sparse_categorical_crossentropy', optimizer=optimizer, metrics=['accuracy',top_k])
history = model.fit(X, y, validation_split=0.2, epochs=50, batch_size=batch_size,callbacks=[early_stop],shuffle=True)
это мой результат с ранней остановкой кода результата моей модели после 14 эпох с ранней остановкой может кто-нибудь помочь мне решить эту проблему переобучения