(Prévu pour être modifié)
Voir ↓ https://arxiv.org/pdf/1710.09412.pdf
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
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.
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é.
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) |
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 |
---|---|---|
α = 0.4 | α = 0.5 | α = 0.6 |
---|---|---|
α = 0.7 | α = 0.8 | α = 0.9 |
---|---|---|
Reference
Recommended Posts