Моя нейронная сеть перегружена, как я могу это предотвратить?
Я ИСПОЛЬЗОВАЛ НАБОР ДАННЫХ ДИАБЕТА ДЛЯ ОБУЧЕНИЯ СВОЕЙ НЕЙРОННОЙ СЕТИ, И МОЯ МОДЕЛЬ СЛИШКОМ ХОРОШО ПОДХОДИТ. КАК Я МОГУ ПРЕДОТВРАТИТЬ ЭТО, Я ТОЖЕ ПРОБОВАЛ НЕСКОЛЬКО МЕТОДОВ, НО ЭТО НЕ СРАБОТАЛО ХОРОШО. НАДЕЮСЬ, ЧТО Я СМОГУ НАЙТИ ЛЮБОЕ РЕШЕНИЕ ЭТОЙ ПРОБЛЕМЫ КАК МОЖНО СКОРЕЕ. ПОПРОБУЙТЕ ЗАПУСТИТЬ ЭТОТ КОД, КОТОРЫЙ Я СОЗДАЛ В GOOGLE COLAB, ПЕРВЫЕ НЕСКОЛЬКО СТРОК КОДА, КОТОРЫЕ Я ПРОКОММЕНТИРОВАЛ, ИСПОЛЬЗУЮТСЯ В GOOGLE COLLAB ДЛЯ ИМПОРТА ФАЙЛА ИЗ СИСТЕМЫ, ЕСЛИ ВЫ ЗАПУСКАЕТЕ КОД В ЛЮБОЙ ДРУГОЙ IDE, ТО НЕ ИСПОЛЬЗУЙТЕ ЭТУ СТРОКУ КОДА. Я ТАКЖЕ ПРЕДОСТАВИЛ ССЫЛКУ ДЛЯ НАБОРА ДАННЫХ, КОТОРАЯ ЯВЛЯЕТСЯ ССЫЛКОЙ НА GOOGLE ДИСК, ПО КОТОРОЙ ВЫ МОЖЕТЕ СКАЧАТЬ НАБОР ДАННЫХ.
#ИМПОРТ ФАЙЛА ИЗ СИСТЕМЫ
"""импорт панд в качестве ПД от Google.импорт файлов colab загружен = файлы.загрузить()
для fn в uploaded.keys():
печать('пользователь загрузил файл "{имя}" с длина {длина} байтов.формат(имя=ФН, длина=лен(загружен[ФН])))
"""
импорт включает в себя как НП
импорт панд в качестве ПД
данные = ПД.read_csv (сведения сахарный диабет'.файл CSV')
данных.функция isnull().любой()
данных.формы
#ОБРАБОТКА ДАННЫХ
X = data.iloc[:,1:9].значения
y = data.iloc[:,9].значения
#МАСШТАБИРОВАНИЕ ДАННЫХ
от sklearn.импорт первичной обработки StandardScaler
СК = StandardScaler()
Х = СК.fit_transform(х)
#РАЗДЕЛЕНИЕ ДАННЫХ В ТЕСТЕ И ОБУЧЕНИИ
из sklearn.model_selection импортируйте train_test_split
X_train,X_test,y_train,y_test = train_test_split(х,г,test_size = 0.2,random_state=1)
#СОЗДАНИЕ МОДЕЛИ
импорт кераса
от выбранной позиции.импорт моделей последовательного
от кераса.слои импортируют плотную# нейронную сеть
из tensorflow.keras импортируйте регуляризаторы
импорт matplotlib.pyplot как plt
модель = последовательная()
model.add(Dense(20, input_dim=8, activation='relu', activity_regularizer=regularizers.l2(1e-4)))
модель.добавить(плотный(15, активация='ноготок', activity_regularizer=регуляризаторов.Л2(1е-4)))
модель.добавить(плотное(10, активация='ноготок', activity_regularizer=регуляризаторов.Л2(1е-4)))
модель.добавить(плотный(3, активация='ноготок', activity_regularizer=регуляризаторов.Л2(1е-4)))
model.add(Dense(1, activation='sigmoid'))
модель.резюме()
#ВЫБРАННЫЙ МЕТОД
модель.компиляции(оптимизатор='Адам', потери='mean_squared_error', метрика=['точность'])
#ОБУЧАЮЩАЯ МОДЕЛЬ С ОБУЧАЮЩИМ НАБОРОМ И НАБОРОМ ПЕРЕКРЕСТНОЙ ПРОВЕРКИ
history = model.fit(X_train, y_train, epochs=100, batch_size=64, validation_data=(X_test,y_test))
#ТОЧНОСТЬ ПОСТРОЕНИЯ ГРАФИКА И ПОТЕРИ
loss_train = history.history['потеря']
loss_val = history.history['val_loss']
эпохи = диапазон(1,101)
ДПП.участок(эпох, loss_train, 'г', метка='обучения потери')
ДПП.участок(эпох, loss_val, " б " метка='потеря валидации)
plt.title ("потеря обучения и валидации"))
plt.xlabel("эпохи")
plt.ylabel('потеря')
ДПП.легенда()
ДПП.показать()
loss_train = history.history['точность']
loss_val = history.history['val_accuracy']
эпохи = диапазон(1,101)
plt.plot(epochs, loss_train, 'g', label='точность обучения')
ДПП.участок(эпох, loss_val, " б " метка='точность проверки')
plt.title ("точность обучения и валидации"))
plt.xlabel("эпохи")
plt.ylabel('точность')
ДПП.легенда()
ДПП.показать()
Ссылка для набора данных: https://drive.google.com/file/d/1ECaKuAyniai1m1KD7bs-ffJ3PTNVJR9U/view?usp=sharing
Что я уже пробовал:
Я попробовал несколько вещей, но они не сработали хорошо.
Kris Lantz
Почему ты кричишь? Мы прямо здесь.
Richard MacCutchan
Наверное, он внизу. :)
Richard MacCutchan
- Я пробовал кое-что, но ничего не вышло."
Это действительно не очень полезный комментарий. Пожалуйста, отредактируйте свой вопрос, правильно отформатируйте код, покажите, что вы пробовали, и объясните точно, что происходит или не происходит.
Abhay binwal
Я сделал несколько комментариев в коде и только попробовал метод отсева для предотвращения переобучения, но это не сработало хорошо.