J'entraîne un réseau neuronal convolutionnel pour classer les images sur les conditions de brouillard (3 classes). Cependant, pour chacune des 150 000 images environ, j'ai également quatre variables météorologiques disponibles qui pourraient aider à prévoir les classes d'images. Je me demandais comment je pourrais ajouter les variables météorologiques (par exemple la température, la vitesse du vent) à la structure CNN existante afin qu'elle puisse aider dans la classification.
Une façon dont je peux déjà penser est de créer un autre (petit) réseau neuronal à action directe aux côtés du CNN, puis de concaténer les sorties des couches CNN et les couches cachées du réseau neuronal non image les unes aux autres au niveau de la couche dense.
La deuxième façon dont je pourrais penser est simplement de mettre ces éléments en contact avec la couche dense. Cependant, dans ce cas, les variables non-image ne pourront (je pense) que faire des prédictions linéaires.
Existe-t-il d'autres (meilleures) façons d'inclure les fonctionnalités non liées à l'image dans le modèle? Et quelle serait la méthode recommandée compte tenu de la quantité de données dont je dispose?
Une autre question que je me pose est de savoir si je dois ou non dégeler les couches convolutives tout en m'entraînant avec ces fonctionnalités non liées à l'image? Ces couches d'un Resnet-18 (qui ont été initialisées comme pré-entraînées sur ImageNet) ont déjà été affinées à l'aide des images. Je suppose que je devrais les garder figés et ne dégeler que la couche dense, car ce n'est qu'ici que les éléments non liés à l'image entrent en «contact» avec les éléments d'image (pas plus tôt dans le CNN). Si je me trompe, dites-le!
Réponses:
Ma solution est comme votre première recommandation, mais avec de légers changements.
Vous pouvez utiliser des fonctions de coût habituelles pour cette architecture.
la source
Concatenate()
calques?Concatenate()
ouconcatenate()
? Je ne peux pas faire la différence