Лабы

ИНС. Обучение с учителем

Если у вас нет каких-то важных причин отступать от следующего плана, то придерживайтесь его. Во всяком случае будет неплохо с него начать.

  1. Определиться с набором данных $X$ и целевой переменной $Y=f(x)$. Целевая переменная может быть одна (значение - в регрессии, класс - в классификации), или их может быть несколько (массив значений вероятности для множества классов).
    $X_1$ $X_2$ .. $X_n$ $Y$
    1 объект цель 1
    2 объект цель 1
    .. ..
    m-ый объект цель m
  2. Предобработка данных (приведение типов, повороты и растяжения. удаление пропусков). Все преобразования производятся над данными до их разделения на выборки. Для удобства последующего использования модели с новыми данными, стоит оформить обработку как функцию def.
  3. Разделить данные ($X, Y$) на обучающую и тестовую выборки
    from sklearn.model_selection import train_test_split
    X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.25, random_state=13)
  4. Создать модель. Накидать слоёв (в соответствии с вашими целями).
  5. Собрать модель, подобрав нужные для конкретного типа задачи функцию потерь и проч. аргументы
    model.compile(loss='?', optimizer='?', metrics=['?'])
  6. Обучить нейросеть, чтобы она, получая на вход X_train, предсказывала значения y_train. От аргументов epochs и batch_size будет зависеть время обучения и точность модели на обучающей выборке
    model.fit(X_train, y_train, epochs=?, batch_size=?)
  7. Посчитать и вывести точность на тестовом наборе данных (который не участвовал в обучении).
    _, accuracy = model.evaluate(model.predict(X_test), y_test)
  8. Если позволяет задача, вывести график с данными и предсказаниями нейронки на тестовом наборе. Проверить, что сделанное совпадает с задуманным.
  9. Поэкспериментировать с архитектурой сети (количество слоев, количество нейронов в слоях, функции активации), попытаться улучшить точность и упростить архитектуру.