0

J'ai vu de nombreux exemples sur Internet sur la façon d'affiner VGG16 et InceptionV3.Par exemple, certaines personnes vont définir les 25 premiers calques à être gelés lors du réglage fin de VGG16. Pour InceptionV3, les 172 premières couches seront gelées. Mais qu'en est-il de resnet? Quand nous faisons un réglage fin, nous allons geler certaines couches du modèle de base, comme suit:comment faire la mise au point avec le modèle resnet50?

from keras.applications.resnet50 import ResNet50 

base_model = ResNet50(include_top=False, weights="imagenet", input_shape=(input_dim, input_dim, channels)) 

.............. 

for layer in base_model.layers[:frozen_layers]: 
    layer.trainable = False 

Alors, comment dois-je régler les frozen_layers? En fait, je ne sais pas combien de couches dois-je définir pour être gelé quand je fais le réglage avec VGG16, VGG19, ResNet50, InceptionV3 .etc. Quelqu'un peut-il me donner des suggestions sur la façon d'affiner ces modèles? Surtout combien de couches les gens vont geler quand ils font des réglages fins avec ces modèles?

+0

J'ai aussi entendu dire que si nous formons seulement nos propres couches denses, c'est ce qu'on appelle l'apprentissage par transfert. Et si nous formons certaines couches dans le model_base (comme resnet, vgg .etc) avec un petit taux d'apprentissage, cela s'appelle le réglage fin. Je sais que les blocs convolutifs ont une signification particulière, alors comment geler les couches dans le modèle de base afin de faire un réglage fin? –

+0

Je les vois sur ce blog: [build-puissant-image-classification-modèles-en utilisant-très-peu-données] (https://blog.keras.io/building-powerful-image-classification-models-using- very-little-data.html) –

Répondre

0

C'est curieux .... le modèle VGG16 a un total de 23 couches ... (https://github.com/fchollet/keras/blob/master/keras/applications/vgg16.py)


Tous ces modèles ont une strucutre similaire:

  • Une série de convolutionnel couches
  • suivi de quelques couches denses

Ces quelques couches denses une re ce que keras appelle top. (Comme dans le paramètre include_top).

Habituellement, ce réglage fin se produit uniquement dans les dernières couches denses. Vous laissez les couches convolutives (qui comprennent les images et localisent les entités) faire leur travail inchangé, et créez votre partie supérieure adaptée à vos classes personnelles.

Les gens créent souvent leur propre partie supérieure parce qu'ils n'ont pas exactement les mêmes classes que le modèle original a été formé. Donc, ils adaptent la partie finale, et entraînent seulement la partie finale. Par conséquent, vous créez un modèle avec include_top=False, puis vous le gèlerez entièrement.
Maintenant, vous ajoutez vos propres couches denses et laissez ces formations.

C'est l'adaptation la plus courante de ces modèles.

Pour d'autres types de réglage fin, il n'y a probablement pas de règles claires.

+0

Désolé pour cette erreur vgg. Je veux dire que les gens vont geler le réseau vgg à l'exception du dernier bloc convolutif afin d'être plus adapté à leurs propres données, puis accorder le dernier bloc convolutionnel ainsi que les couches denses avec un petit taux d'apprentissage, comme ceci: [vgg16 fine -tuning] (https://blog.keras.io/img/imgclf/vgg16_modified.png) –