Загрузка современной модели и оценка в TF 2.0.

«Стоя на плечах гигантов»

Трансферное обучение определяется ниже:

Переносное обучение и адаптация предметной области относятся к ситуации, когда то, что было изучено в одной обстановке… используется для улучшения обобщения в другой обстановке — стр. 526, Глубокое обучение, 2016 г.

Таким образом, говоря простыми словами, это процесс использования современных моделей в соответствующей области для решения нашей проблемы. Давайте пройдем весь процесс использования этого подхода. И пропустить теорию за книгами и курсом 😉

Шаг 1: Определение проблемы

Прежде всего, мы должны знать, с какой проблемой мы имеем дело. Для этого блога я возьму задачу классификации изображений, где нам нужно классифицировать изображение ячейки, независимо от того, относится ли оно к классу Незараженный или Паразитированный (зараженный). Этот набор данных является частью набора данных о малярии. Образцы помеченных изображений приведены ниже:

Таким образом, наша цель состоит в том, чтобы создать модель для классификации двух классов. Таким образом, наша проблема заключается в классификации изображений.

Шаг 2: Выбор наиболее подходящей модели.

Можно подумать о построении модели CNN с нуля, что может быть осуществимо или необходимо в некоторых случаях. Но здесь мы будем использовать предварительно обученную модель. Мы выбираем ResNet50 в качестве нашей базы, так как кажется, что она работает лучше по сравнению с InceptionNet. Использовать то же самое:

# adding the Resnet50v2 model
Resnet = tf.keras.applications.ResNet50V2(include_top=False,
                                           weights='imagenet',
                                           input_shape=(100,100,3))

Приведенная выше строка загружает ResNet50V2 , без top означает, что слой классификации отсутствует в модели, weights = 'imagenet' означает, что модель имеет веса, которые были получены при ее обучении на наборе данных imagenet, input_shape должен быть равен форма входных изображений, которую мы хотим предоставить, в нашем случае 100 x 100 x 3 (ширина x высота x канал).

Вся модель, которую мы создаем, приведена в коде ниже:

# adding the Resnet50v2 model
Resnet = tf.keras.applications.ResNet50V2(include_top=False,
                                          weights='imagenet',
                                          input_shape=(100,100,3))
Resnet.trainable = False
#print(Resnet.summary())
myResnet = tf.keras.models.Sequential(name='MyResnet')
myResnet.add(Resnet)
myResnet.add(tf.keras.layers.Flatten())
myResnet.add(tf.keras.layers.Dropout(0.5))
myResnet.add(tf.keras.layers.Dense(256, activation='relu'))
myResnet.add(tf.keras.layers.Dropout(0.5))
myResnet.add(tf.keras.layers.Dense(64, activation='relu'))
myResnet.add(tf.keras.layers.Dense(2, activation='softmax'))
print(myResnet.summary())

Здесь мы добавляем нижний слой, чтобы удовлетворить нашу задачу, таким образом, слой softmax в конце с двумя нейронами помогает классифицировать два класса, поскольку классов всего два и они взаимоисключающие, поэтому также можно использовать один нейрон с сигмовидной активацией. На обучение уходит сравнительно меньше времени. Но мы пойдем с 2 нейронами softmax.😎

Шаг 3: Обучите модель.

Даже через модель resnet обучается, но новые добавленные головные слои (да, выходная часть является головной частью сети, а входная — хвостовой по соглашению 🤷‍♂️) не обучаются, поэтому нам нужно тренироваться, чтобы соответствовать нашему набору данных. После обучения график может быть показан как: -

Да, еще есть место для других эпох, но пока мы остановимся здесь, так как у нас другие планы. См. Часть 2: Тонкая настройка.

Шаг 4: Оценка

Результаты оценки ниже:

The accuracy of the MyResnet Custom model is:  0.9361393323657474 
The Mean Squared Error of the MyResnet Custom model is:  0.06386066763425254 
The Mean Squared Log Error of the MyResnet Custom model is:  0.03068205023570517

Теперь мы попытаемся увеличить его еще больше с помощью тонкой настройки модели под наши нужды. Оставайтесь с нами для части 2.

Ссылки на код: -

[1] https://github.com/Aakash-ML/TransferLearning101