[PYTHON] Exemple d'implémentation simple d'un type d'augmentation de données

Vue d'ensemble de la confusion

(Prévu pour être modifié)

Voir ↓ https://arxiv.org/pdf/1710.09412.pdf

Exemple de mise en œuvre facile

def mixup(x, y, batch_size, alpha = 0.2):
    l = np.random.beta(alpha, alpha, batch_size)
    x_, y_ = sklearn.utils.shuffle(x, y)
    shape = tuple(-1 if i == 0 else 1 for i in range(len(x.shape)))
    x = l.reshape(shape) * x + (1 - l).reshape(shape) * x_
    shape = tuple(-1 if i == 0 else 1 for i in range(len(y.shape)))
    y = l.reshape(shape) * y + (1 - l).reshape(shape) * y_
    return x, y

Description du code

argument

Nom de l'argument Description (type)
x Données d'entrée (numpy.ndarray)
y Données de sortie (numpy.ndarray)
batch_size Littéralement taille du lot (entier)
alpha Paramètres qui déterminent la distribution β (float)

On suppose que «x» et «y» sont entrés dans des unités de lot et que l'ensemble de données est mélangé après chaque époque.

Contenu de la fonction

l = np.random.beta(alpha, alpha, batch_size) Ici, le poids de mélange est calculé. La forme de l est (batch_size).

x_, y_ = sklearn.utils.shuffle(x, y) Ici, le brassage est effectué tout en maintenant la correspondance entre «x» et «y».

shape = tuple(-1 if i == 0 else 1 for i in range(len(x.shape))) Ici, nous recherchons une forme qui rend «l» diffusable vers «x». Par exemple, si la forme de x est (batch_size, width, height, ch), et la forme de l est (batch_size), quand vous faites l * x Le résultat du calcul n'est pas celui attendu. De plus, selon la forme de «x», une erreur telle que «les opérandes ne peuvent pas être diffusés ...» peut se produire.

x = l.reshape(shape) * x + (1 - l).reshape(shape) * x_ Ici, «x» est mélangé.

shape = tuple(-1 if i == 0 else 1 for i in range(len(y.shape))) Ici, nous recherchons une forme qui rend «l» diffusable vers «y».

y = l.reshape(shape) * y + (1 - l).reshape(shape) * y_ Ici, «y» est mélangé.

Valeur de retour

Nom de la valeur de retour Description (type)
x Données d'entrée mixtes (numpy.ndarray)
y Données de sortie mixtes (numpy.ndarray)

échantillon

Lorsque le mélange est appliqué en considérant la matrice d'unité comme des données d'entrée, le résultat est le suivant.

α = 0.1 α = 0.2 α = 0.3
image.png image.png image.png
α = 0.4 α = 0.5 α = 0.6
image.png image.png image.png
α = 0.7 α = 0.8 α = 0.9
image.png image.png image.png

Reference

Recommended Posts

Exemple d'implémentation simple d'un type d'augmentation de données
Mise en place d'un filtre à particules simple
Explication et mise en œuvre du perceptron simple
Pandas: un exemple très simple de DataFrame.rolling ()
Exemple de traitement efficace des données avec PANDAS
J'ai résumé l'année où j'ai étudié la science des données par moi-même.
"Chaîne de caractères parentaux" Résumé de l'exemple d'implémentation d'un analyseur simple
[Python] [Word] [python-docx] Analyse simple des données de diff en utilisant python
Un exemple très simple de problème d'optimisation avec ortoolpy
Exemple d'implémentation du serveur LINE BOT pour un fonctionnement réel
DataNitro, implémentation de la fonction de lecture des données de feuille