Verstehe Code nicht
Verfasst: Montag 2. Mai 2022, 09:31
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)
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)