Перейти к основному содержанию
EDU-MMCS
Вы используете гостевой доступ (Вход)

Научно-исследовательский семинар: нейронные сети и глубокое обучение

  1. В начало
  2. Курсы
  3. Осенний семестр
  4. Магистратура
  5. НИСНейрСети
  6. Раздел 2. Глубокое обучение
  7. Практическое задание №4

Практическое задание №4

Требуемые условия завершения
Открыто с: среда, 9 сентября 2020, 00:00
Срок сдачи: среда, 16 сентября 2020, 00:00

1.     Создание сверточной нейронной сети (CNN) на наборе данных CIFAR-10 и визуализация полученных фильтров. Запустите jupyter notebook и создайте тетрадку.

2.     Загрузите набор данных CIFAR-10, который содержит 32x32 цветных изображения из 10 классов: самолет, автомобиль, птица, кошка, олень, собака, лягушка, лошадь, корабль, грузовик

from cifar import load_cifar10

x_train,y_train,x_val,y_val,x_test,y_test = load_cifar10("cifar_data",channels_last=True)

NUM_CLASSES = 10

cifar10_classes = ["airplane", "automobile", "bird", "cat", "deer",

                   "dog", "frog", "horse", "ship", "truck"]

3.     Подготовьте данные для обучения, нормализуйте их и преобразуйте метки классов в однозначно закодированные векторы. Используйте keras.utils.to_categorical:

4.     Определите архитектуру сверточной нейронной сети:

# import necessary building blocks

from keras.models import Sequential

from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Activation, Dropout

from keras.layers.advanced_activations import LeakyReLU

5.     Создайте мини-сверточную сеть со следующей такой архитектурой:

a.      входной уровень 3x3 свертки с 10 фильтрами и активация ReLU

b.     3x3 pooling (или установите предыдущий шаг свертки на 3)

c.      Dense слой с 100-нейронами и активация ReLU

d.     10% dropout

e.      Выходной dense слой.

 

6.     Определите модель, которая принимает (None, 32, 32, 3) входные данные и прогнозирует (None, 10) выходные данные с вероятностями для всех классов. Простые сети прямой связи в Keras можно определить следующим образом:

model = Sequential()  # start feed-forward model definition

model.add(Conv2D(..., input_shape=(32, 32, 3)))  # first layer needs to define "input_shape"

...  # here comes a bunch of convolutional, pooling and dropout layers

model.add(Dense(NUM_CLASSES))  # the last layer with neuron for each class

model.add(Activation("softmax"))  # output probabilities

 

7.     Обучите модель. Во время обучения вы должны наблюдать снижение заявленных потерь при обучении и валидации. Если потери на тренировках не уменьшаются с эпохами, следует пересмотреть определение модели и скорость обучения:

INIT_LR = 5e-3  # initial learning rate

BATCH_SIZE = 32

EPOCHS = 10

K.clear_session()  # clear default graph

# don't call K.set_learning_phase() !!! (otherwise will enable dropout in train/test simultaneously)

model = make_model()  # define our model

# prepare model for fitting (loss, optimizer, etc)

model.compile(

    loss='categorical_crossentropy',  # we train 10-way classification

    optimizer=keras.optimizers.adamax(lr=INIT_LR),  # for SGD

    metrics=['accuracy']  # report accuracy during training

)

# fit model

model.fit(

    x_train2, y_train2,  # prepared data

    batch_size=BATCH_SIZE,

    epochs=EPOCHS,

    validation_data=(x_val, y_val),

    shuffle=True,

)

 

8.     Протестируйте получившуюся модель:

y_pred_test = model.predict_proba(x_test)

y_pred_test_classes = np.argmax(y_pred_test, axis=1)

y_pred_test_max_probas = np.max(y_pred_test, axis=1)

 

9.     Визуализируйте полученные моделью фильтры:

cols = 8

rows = 2

fig = plt.figure(figsize=(2 * cols - 1, 3 * rows - 1))

for i in range(cols):

    for j in range(rows):

        random_index = np.random.randint(0, len(y_test))

        ax = fig.add_subplot(rows, cols, i * rows + j + 1)

        ax.grid('off')

        ax.axis('off')

        ax.imshow(x_test[random_index, :])

        pred_label = cifar10_classes[y_pred_test_classes[random_index]]

        pred_proba = y_pred_test_max_probas[random_index]

        true_label = cifar10_classes[y_test[random_index]]

        ax.set_title("pred: {}\nscore: {:.3}\ntrue: {}".format(

               pred_label, pred_proba, true_label

        ))

plt.show()

2.     Задачи для самостоятельной работы:

a.      Увеличить точность полученной модели. Для этого, воспользуйтесь продвинутыми техниками и нахождением подходящих гиперпараметров: таких как изменение размера последовательности, количества слоев сети.

b.     Реализуйте «Уменьшенную / ускоренную нейронную сеть», достигающую 80% точности с подробным анализом результатов, таких как карты значимости

◄ Практическое задание №3
Практическое задание №5 ►
Пропустить Навигация
Навигация
  • В начало

    • Страницы сайта

      • Мои курсы

      • Теги

    • Мои курсы

    • Курсы

      • Осенний семестр

        • Прикладная математика и информатика

        • Фундаментальная информатика и ИТ

        • Математика, механика

        • Педагогическое образование

        • Магистратура

          • Разработка мобильных приложений и компьютерных игр

          • ТОИ маг

          • Modern computer technology

          • Математика и её приложения в науке и инженерии

          • MUDP

          • ОНС-Н

          • RL

          • ИИ_НС

          • КрПр

          • КЗ

          • АДС

          • РПП

          • НИСНейрСети

            • Раздел 1. Введение в нейронные сети

            • Раздел 2. Глубокое обучение

              • ЗаданиеПрактическое задание №3

              • ЗаданиеПрактическое задание №4

            • Раздел 3. Глубокое обучение в NLP

        • Аспирантура

        • Вечернее отделение

        • Другое

      • Весенний семестр

        • Прикладная математика и информатика

        • Фундаментальная информатика и ИТ

        • Математика, механика

        • Педагогическое образование

        • Магистратура

          • Разработка мобильных приложений и компьютерных игр

        • Аспирантура

        • Вечернее отделение

        • Другое

      • Воскресная компьютерная школа

        • Пользователь компьютера плюс

        • Пользователь прикладных программ

        • Программирование I ступень

        • Программирование II ступень

        • Программирование III ступень

        • Архив

      • Воскресная математическая школа

        • Открытое тестирование РНОМЦ и мехмата ЮФУ - 2025

        • Олимпиадная математическая школа

        • Повышение квалификации

        • Доступная математика

        • Лаборатория математического онлайн-образования мех...

        • Осенняя универсиада

        • Научно-практическая конференция

        • ВМШ

          • ВМШ - 24

        • Летняя олимпиадная математическая школа РНОМЦ и ме...

      • Государственная итоговая аттестация

      • Дополнительное образование

      • Олимпиады

      • Видеолекции

      • Разное

      • Архив курсов

      • Заочная школа мехмата ЮФУ

Служба поддержки сайта
Вы используете гостевой доступ (Вход)
НИСНейрСети
Сводка хранения данных
Скачать мобильное приложение Яндекс.Метрика