Лабы

Keras

Читаем Шолле стр. 81 – 119 и реализуем то, что описывается:

  • стр. 92 – 102. Пример бинарной классификации (отзывы к фильмам);
  • стр. 102 – 111. Пример многоклассивой классификации (новостные ленты);
  • стр. 111 – 118. Пример регрессии (предсказание цен на дома).

Задание 🔮

Используя библиотеку Keras на Python:

  1. Обучить нейронку, аппроксимирующую функцию $f(x) = x$:
    • Создать набор данных на две колонки: $X$ от -20 до 20 с шагом 0.1 и $Y$.
    • Разделить на обучающую и тестовую выборки.
    • Обучить.
    • Вывести точность на обучающей выборке.
    • Вывести точность на тестовой выборке.
    • Вывести график функции и точек предсказания нейронки на тестовом наборе.
  2. Обучить нейронку, аппроксимирующую функцию $f(x) = \vert x \vert $.
  3. Обучить нейронку, аппроксимирующую окружность.
  4. Обучить нейронку, аппроксимирующую функцию $f(x) = sin(x)$.
  5. Обучить нейронку, выполняющую бинарную классификацию на данных с Kaggle:
    • Найти на Kaggle набор данных. Сохранить ссылку, чтобы не потерять.
    • Выбрать как минимум два столбца данных для обучения: входной и выходной. В выходном столбце должно быть ровно два различных значения: либо вы нашли такой набор данных; либо нужно задать порог для чисел ($x>100$) или условие для строк (x in ['зеленый','салатовый']), или что-то еще для другого типа данных, и создать соответствующий столбец с бинарными значениями (Истина, если условие выполняется, и Ложь - в противном случае).
    • Обучить модель предсказывать выходные данные по входным.
  6. Показать на графике, как меняется ошибка в процессе обучения (для одной из предыдущих НС).

Пример вывода результата обучения

  • sin
  • #...
    model.compile(loss='mse', optimizer='rmsprop', metrics=['mae'])
    model.fit(X_train, y_train, epochs=param["epochs"], batch_size=param["batch_size"])
    _, accuracy = model.evaluate(X_train, y_train)
    _, accuracy2 = model.evaluate(model.predict(X_test), y_test)
    predictions = model.predict(X_train)
    plt.figure(figsize=(10., 10.))
    title = str(list((str(dense[j]) +' '+ str(activation[j]) for j in range(len(param["layers"])))))
    plt.title(title + "\nepochs="+str(param["epochs"])+" batch_size="+str(param["batch_size"])+"\nточность обучения %.2f, точность на тесте %.2f" % (accuracy*100, accuracy2*100))
    for i in range(len(X_train)):
        plt.scatter((X_train)[i], predictions[i], c='red', label=('prediction' if i==0 else None))
    plt.plot(x, y, c='blue', label=param["func_label"], marker='X')
    plt.scatter(X_test, model.predict(X_test), c='green', label='тест')
    plt.legend()