2017-05-16 1 views
1

J'ai une application de classification d'image avec 6 classes et une taille d'image 128x64x3. J'ai utilisé le modèle ResNet 20 pour m'entraîner avec un taux d'erreur d'environ 2%. Cependant, le résultat de l'évaluation est supérieur à 20% sur le même ensemble d'images de train. L'évaluation a utilisé la nuget CNTK.CPUOnly/2.0 avec la fonction onEvaluateAnColorImage. Les questions sont:Le train ResNet et le résultat d'évaluation ne correspondent pas CNTK

  1. ResNet fonctionne-t-il en mode CPUOnly pour l'évaluation? Le modèle s'est entraîné avec GPU.
  2. Est-ce que ResNet nécessite un fichier moyen? Je vois des modèles avec un fichier moyen et d'autres non.
  3. Y a-t-il une raison particulière qui pourrait causer la différence et entraîner l'évaluation?

Merci à l'avance, Terry

Répondre

1

Resnet formé avec GPU devrait fonctionner avec une évaluation CPUOnly. Si possible, vous pouvez utiliser le paquet Nuget CNTK.GPU et exécuter votre application sur un périphérique GPU pour vérifier si vous voyez toujours la différence de précision. Si oui, s'il vous plaît laissez-nous savoir et nous allons enquêter.

Si vous utilisez un fichier moyen pendant l'entraînement, vous devez également soustraire la valeur moyenne pendant l'évaluation.

Une autre raison pourrait causer une différence pourrait être le prétraitement d'image. La formation utilise généralement des lecteurs qui effectuent automatiquement la resisa- tion et la transformation des canaux, mais vous devez le faire vous-même pour l'évaluation, car aucun lecteur n'est impliqué. Vous pouvez trouver des exemples d'évaluation d'image here.

Merci,

+0

Merci Zhou, vous avez raison. Le prétraitement de l'image est probablement la cause. Après avoir supprimé la ligne "# {type =" Crop "; cropType =" RandomSide "; sideRatio = 1.0; jitterType =" UniRatio "}:" dans la fonction, le modèle produit étonnamment bon résultat. L'erreur est nulle sur 5000 images de train. J'aime remercier l'équipe de CNTK pour cet excellent outil. – Terry1998