Verstehe Code nicht

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
nichtSoGuter
User
Beiträge: 92
Registriert: Mittwoch 13. April 2022, 17:40

Code: Alles auswählen

def plot_digits(instances, bilder_pro_zeile=10, ):
    size = 28
    # falls anzahl instanzen kleiner als angegebenes images_per_row (z.b ich habe 5 instanzen, es sollen aber 10 in eine zeile)
    bilder_pro_zeile = min(len(instances), bilder_pro_zeile)
    # ceil = smallest integer größer/gleich x --> rundet immer auf
    zeilenanzahl = math.ceil(len(instances) /bilder_pro_zeile)
  

   # leerstellen werden mit "0er" Instanzen befüllt
    # z.b. 
    # instanz
    # instanz
    # ....
    # leerstelle --> (erste leerstelle) eine Zeile mit 28*28 0er Spalten befüllen
    # leerstelle --> (zweite leerstelle) zweite zu befüllende Zeile mit 28*28 0er Spalten befüllen
    
    leerstellen = zeilenanzahl  * bilder_pro_zeile - len(instances)
    padded_instances = np.concatenate([instances, np.zeros((leerstellen, size*size))], axis=0)

     #AB HIER VERSTEHE ICH DEN CODE NICHT
    #  Zitat: Reshape the array so it's organized as a grid containing 28×28 images
    
    image_grid = padded_instances.reshape((zeilenanzahl , bilder_pro_zeile, size, size))
    
    # transpose() transponiert die Matirx --> transpose(Listenanzahl, Zeilenanzahl, Spaltenanzahl)
    # Zitat: Combine axes 0 and 2 (vertical image grid axis, and vertical image axis),
    # and axes 1 and 3 (horizontal axes). We first need to move the axes that we
    # want to combine next to each other, using transpose(), and only then we
    # can reshape
    
    big_image = image_grid.reshape(zeilenanzahl  * size, bilder_pro_zeile * size)
   
Frage
Wieso wird reshaped dann transponiert und dann wieder reshaped? Ich kann mir nicht so ganz vorstellen was der Output bei reshapen bzw transponieren ist.

Als Input soll die Funktion einen Instanz des Datasets MNIST erhalten. Bei den Instanzen handelt es sich um Bilder von Zahlen, die handschriftlich geschrieben wurden.
Mit der Funktion sollen einzelne Instanzen auf ein größeres bild übertragen werden, was dann geplottet wird (den code für das plotten sieht man bei dem code nicht mehr)
Benutzeravatar
__blackjack__
User
Beiträge: 14078
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Wo wird denn transponiert? Im Kommentar steht da was, was aber im Code gar nicht gemacht wird.

Ansonsten lass Dir doch mal Zwischenergebnisse ausgeben. In diesem Fall wahrscheinlich am besten grafisch.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten