Jusqu'à la dernière fois
[Partie 1] Utilisez le Deep Learning pour prévoir la météo à partir d'images météorologiques [Partie 2] Utilisez le Deep Learning pour prévoir la météo à partir d'images météorologiques [Partie 3] Utilisez le Deep Learning pour prévoir la météo à partir d'images météorologiques
Si vous ne résumez que le résultat final
Nous avons augmenté Epoch de 50 générations à 100 générations, et l'ASC moyenne était de 0,724, et les résultats suivants étaient les meilleurs pour le moment.
Météo | precision | recall | f1-score |
---|---|---|---|
pluie | 0.53 | 0.77 | 0.63 |
Bien | 0.86 | 0.68 | 0.76 |
moyenne | 0.76 | 0.71 | 0.72 |
Au moins, il y avait trop peu de générations. Cependant, le changement d'image, l'augmentation des données d'entraînement et la classification ternaire n'ont pas amélioré les résultats.
Après de nombreux essais et erreurs, j'ai essayé de faire quelque chose qui n'était ni euh ni euh, mais je n'ai rien trouvé qui dépassait cette AUC ...
Pour ne résumer que les résultats,
C'est du surapprentissage. Avec les données d'entraînement, la précision monte à 0,95, mais avec les données de test, les résultats sont pires.
Actuellement, la couche cachée compte 500 nœuds, mais même s'il s'agit de 1000 nœuds, la précision ne s'est pas améliorée.
J'ai créé trois modèles qui effectuent une classification binaire selon laquelle il fait beau, pluvieux ou nuageux, mais la précision a diminué.
On a dit qu'il valait mieux l'augmenter, mais c'est aussi inutile.
etc.
En conséquence, les candidats qui sont arrivés sont les suivants.
Jusqu'à présent, la mise à l'échelle des données d'image a été
img_mat /= 255.
C'était une mise à l'échelle très simple. La mise à l'échelle est également importante dans l'apprentissage automatique conventionnel et il est souvent difficile d'apprendre sans une mise à l'échelle appropriée.
Par conséquent, cela est modifié en normalisant les données d'entraînement pour chaque canal RVB comme suit.
for i in range(0,3):
m = x_train_mat[:,i,:,:].mean()
s = x_train_mat[:,i,:,:].std()
x_train_mat[:,i,:,:] = (x_train_mat[:,i,:,:] - m)/s
x_test_mat[:,i,:,:] = (x_test_mat[:,i,:,:] - m)/s
En conséquence, en regardant le processus d'apprentissage, la vitesse d'apprentissage a considérablement changé et la précision s'est améliorée en un petit nombre de générations.
Selon l'article, CNN devrait utiliser un modèle pré-entraîné, alors introduisons ceci brièvement. Dans un entraînement normal, la taille du lot divise les données d'apprentissage en 1 Epoch, mais les données d'apprentissage elles-mêmes à introduire dans le modèle sont divisées.
En d'autres termes
Données d'apprentissage A → Réglage du modèle → Données d'apprentissage B → Réglage du modèle → (ry
Après avoir réglé le modèle avec A comme indiqué dans, effectuez le réglage du modèle avec B à l'aide de ce paramètre.
Conceptuellement, il est destiné à supprimer le surapprentissage et le réglage fin.
Si vous écrivez dans le code
N = len(x_train_mat)
wbatch = N/3
perm = np.random.permutation(N)
for i in six.moves.range(0, N, wbatch):
t_x_data = x_train_mat[perm[i:i + wbatch]]
t_y_data = y_train[perm[i:i + wbatch]]
if len(t_y_data) > wbatch / 2:
"""Jeter s'il y a trop peu de données d'entraînement"""
cnn.fit_test(t_x_data,t_y_data,x_test_mat,y_test)
Comme ça.
Les données des enseignants dans les données de formation sont biaisées et la relation est comme la pluie <bien. En conséquence, il s'adapte excessivement du côté ensoleillé, et il est devenu évident que la précision de la pluie ne s'améliore pas. Par conséquent, afin d'augmenter les données de pluie dans les données d'apprentissage, le traitement suivant a été effectué.
Pour éviter le surapprentissage, nous avons inclus le décrochage dans les résultats de mise en commun CNN max.
Jusqu'à présent, j'ai décidé de cette zone sans l'ajuster et l'ai mise à 3, mais je vais changer cela.
Dans les conditions ci-dessus, nous modifierons la taille du filtre et la taille du pool.
ASC moyenne: 0,711 ASC ensoleillé: 0,790
Météo | precision | recall | f1-score |
---|---|---|---|
pluie | 0.6 | 0.61 | 0.6 |
Bien | 0.82 | 0.82 | 0.82 |
moyenne | 0.75 | 0.75 | 0.75 |
ASC moyenne: 0,719 AUC de Haru: 0,783
Météo | precision | recall | f1-score |
---|---|---|---|
pluie | 0.66 | 0.58 | 0.61 |
Bien | 0.82 | 0.86 | 0.84 |
moyenne | 0.77 | 0.77 | 0.77 |
ASC moyenne: ** 0,735 ** ASC ensoleillé: 0,780
Météo | precision | recall | f1-score |
---|---|---|---|
pluie | 0.67 | 0.61 | 0.63 |
Bien | 0.83 | 0.86 | 0.85 |
moyenne | 0.78 | 0.78 | 0.78 |
ASC moyenne: 0,688 ASC ensoleillé: 0,790
Météo | precision | recall | f1-score |
---|---|---|---|
pluie | 0.67 | 0.48 | 0.56 |
Bien | 0.79 | 0.89 | 0.84 |
moyenne | 0.75 | 0.76 | 0.75 |
ASC moyenne: ** 0,741 ** AUC de Haru: 0,784
Météo | precision | recall | f1-score |
---|---|---|---|
pluie | 0.53 | 0.8 | 0.64 |
Bien | 0.88 | 0.68 | 0.77 |
moyenne | 0.77 | 0.72 | 0.73 |
ASC moyenne: ** 0,750 ** ASC ensoleillé: 0,790
Météo | precision | recall | f1-score |
---|---|---|---|
pluie | 0.61 | 0.7 | 0.65 |
Bien | 0.85 | 0.8 | 0.83 |
moyenne | 0.78 | 0.77 | 0.77 |
Apparemment, le résultat est meilleur si la taille du filtre est définie sur 0 et la taille du pool est un peu plus grande. L'augmentation de la taille de la mise en commun extraira plus de caractéristiques, donc cela peut être mieux cette fois. Je pense qu'il existe une bonne combinaison de taille de filtre et de taille de pool en fonction du problème.
Le résultat final du modèle terminé est le suivant.
ASC moyenne: ** 0,767 ** AUC de Haru: ** 0,806 **
Météo | precision | recall | f1-score |
---|---|---|---|
pluie | 0.59 | 0.77 | 0.67 |
Bien | 0.88 | 0.76 | 0.82 |
moyenne | 0.79 | 0.76 | 0.77 |
Il a considérablement augmenté en tant que AUC.
Je continue les essais et les erreurs en modifiant diverses conditions, mais je n'ai pas pu trouver quelque chose comme un modèle, alors j'essaie diverses combinaisons. Cependant, étant donné que l'évaluation est trop effectuée avec les données de test, les données de test ne font-elles pas également partie des données d'entraînement? Il est certain que la théorie est sortie. Il peut être préférable d'utiliser différentes données de test lorsque le modèle final est terminé.
Recommended Posts