[PYTHON] Einfaches Implementierungsbeispiel für eine Art der Datenerweiterung

Übersicht über die Verwechslung

(Geplant zur Bearbeitung)

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

Einfaches Implementierungsbeispiel

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

Codebeschreibung

Streit

Argumentname Beschreibung (Typ)
x Eingabedaten (numpy.ndarray)
y Ausgabedaten (numpy.ndarray)
batch_size Buchstäbliche Chargengröße (int)
alpha Parameter, die die β-Verteilung bestimmen (float)

Es wird angenommen, dass "x" und "y" in Batch-Einheiten eingegeben werden und dass der Datensatz nach jeder Epoche gemischt wird.

Inhalt der Funktion

l = np.random.beta(alpha, alpha, batch_size) Hier wird das Mischgewicht berechnet. Die Form von "l" ist "(batch_size)".

x_, y_ = sklearn.utils.shuffle(x, y) Hier wird das Mischen durchgeführt, während die Entsprechung zwischen "x" und "y" beibehalten wird.

shape = tuple(-1 if i == 0 else 1 for i in range(len(x.shape))) Hier suchen wir nach einer Form, die l auf x sendbar macht. Wenn beispielsweise die Form von "x" (batch_size, width, height, ch) "und die Form von" l "" (batch_size) "ist, wenn Sie" l * x "ausführen Das Berechnungsergebnis ist nicht wie erwartet. Abhängig von der Form von "x" kann auch ein Fehler wie "Operator konnte nicht gesendet werden ..." auftreten.

x = l.reshape(shape) * x + (1 - l).reshape(shape) * x_ Hier wird "x" gemischt.

shape = tuple(-1 if i == 0 else 1 for i in range(len(y.shape))) Hier suchen wir nach einer Form, die "l" für "y" sendbar macht.

y = l.reshape(shape) * y + (1 - l).reshape(shape) * y_ Hier wird "y" gemischt.

Rückgabewert

Rückgabewertname Beschreibung (Typ)
x Gemischte Eingabedaten (numpy.ndarray)
y Gemischte Ausgabedaten (numpy.ndarray)

Stichprobe

Wenn die Verwechslung angewendet wird, indem die Einheitsmatrix als Eingabedaten betrachtet wird, ist das Ergebnis wie folgt.

α = 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

Einfaches Implementierungsbeispiel für eine Art der Datenerweiterung
Implementierung eines einfachen Partikelfilters
Erklärung und Implementierung von einfachem Perzeptron
Pandas: Ein sehr einfaches Beispiel für DataFrame.rolling ()
Beispiel für eine effiziente Datenverarbeitung mit PANDAS
Ich habe das Jahr, in dem ich selbst Datenwissenschaft studiert habe, zusammengefasst.
Zusammenfassung einfacher Parser-Implementierungsbeispiele
[Python] [Word] [python-docx] Einfache Analyse von Diff-Daten mit Python
Ein sehr einfaches Beispiel für ein Optimierungsproblem mit ortoolpy
Implementierungsbeispiel des LINE BOT-Servers für den tatsächlichen Betrieb
DataNitro, Implementierung einer Funktion zum Lesen von Daten aus dem Blatt