Seite 1 von 1

Verstehe Code nicht

Verfasst: Montag 2. Mai 2022, 09:31
von nichtSoGuter

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)

Re: Verstehe Code nicht

Verfasst: Montag 2. Mai 2022, 09:45
von __blackjack__