Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Нейросеть переобучается, высокий loss как решить?

Roma Craft Знаток (393), закрыт 2 недели назад
Делаю нейросеть, ради интереса и изучения но получаю высокий loss и переобучение как можно решить эту проблему?

 import numpy as np 
import tensorflow as tf
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences

# Пример текстовых данных для обучения
sentences = [
'Это пример предложения 1.',
'Это другое предложение.',
'А это третье предложение.',
'Это просто пример.',
"Сегодняшний день был насыщен событиями. Утром я проснулся рано, выпил кофе и отправился на работу. Весь день я занимался проектом, который требовал моего внимания. Вечером я встретился с друзьями в кафе, где мы поужинали и пообщались. В целом, день прошел успешно и был полон интересных моментов.",
"Вчера я посетил выставку современного искусства. Впечатления были потрясающие! Я увидел работы талантливых художников и скульпторов, которые вдохновили меня на новые творческие идеи. После выставки я сходил в кафе и заказал чашку горячего шоколада. Это был замечательный день!",
"Вчера я отправился в поход в горы с друзьями. Мы провели целый день на свежем воздухе, исследуя живописные места и наслаждаясь красотой природы. Вечером мы разжигали костер и пели песни под звездным небом. Это было незабываемо и вдохновляюще!",
"Сегодня у меня был насыщенный день. Утром я сходил в спортзал, потом встретился с друзьями на обед, после чего посетил несколько музеев. Вечером провел время с семьей, готовили ужин вместе и смотрели фильм.",
"Это был удивительный выходной! Я поехал на пикник с семьей и друзьями. Мы готовили шашлык, играли в футбол и наслаждались природой вокруг. Вечером мы зажгли костер и пели песни под гитару.",
"На прошлой неделе я побывал на кулинарном мастер-классе. Узнал много интересного о кулинарии и даже научился готовить новое блюдо. После мастер-класса мы с друзьями сходили в ресторан, чтобы попробовать местную кухню."
]

labels = np.array([9, 0, 9, 0, 9, 0, 9, 9, 9, 0]) # Пример меток классов
# Пример меток классов

# Создание токенизатора и преобразование текста в последовательности чисел
tokenizer = Tokenizer()
tokenizer.fit_on_texts(sentences)
word_index = tokenizer.word_index
sequences = tokenizer.texts_to_sequences(sentences)

# Дополнение последовательностей до одинаковой длины
max_len = max([len(seq) for seq in sequences])
padded_sequences = pad_sequences(sequences, maxlen=max_len, padding='post')

# Создание нейронной сети
model = tf.keras.Sequential([
tf.keras.layers.Embedding(len(word_index) + 60, 128, input_length=max_len),
tf.keras.layers.GlobalAveragePooling1D(),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(60, activation='softmax'),
tf.keras.layers.Dense(1, activation='sigmoid')
])

model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# Обучение модели
model.fit(padded_sequences, labels, epochs=100)

# Пример использования обученной модели для предсказания класса нового текста
new_sentence = ['Новое предложение для классификации.']
new_sequence = tokenizer.texts_to_sequences(new_sentence)
new_padded_sequence = pad_sequences(new_sequence, maxlen=max_len, padding='post')
prediction = model.predict(new_padded_sequence)
print("Prediction:", prediction)
Лучший ответ
♡$ⴎG@r₱u₷sყ♡ Высший разум (328982) 1 год назад
Чтобы избежать переобучения, попробуй следующее:

1. Уменьши количество эпох. 100 - это много!
2. Добавь слои Dropout, чтобы предотвратить переобучение.
3. Используй регуляризацию, если нужно.
4. Проверь данные на сбалансированность классов.
5. Раздели данные на тренировочную и валидационную выборки.
6. Примени Early Stopping.

Вот такой вариант! Keep it cool! ?✌️
Остальные ответы
Похожие вопросы