Verstehe code nicht
Verfasst: Mittwoch 27. Juli 2022, 19:52
Ich verstehe den Code aus einem Buch leider nicht genau. Vielleicht kann mir jemand damit helfen.
Zunächst wird eine Attribut einer Klasse in der __init__() Methode der Klasse angelegt.
Dabei wird self.test_data mit einer Leeren liste und self.dataset mit None gleichgesetzt. Wieso wird nicht beides mit None initialisiert? Kann es dafür einen bestimmten Grund geben? Beide Variablen werden im weitern Verlauf des Codes überschrieben, also ist es doch egal wie man die Instanzvariablen initialisiert oder?
Außerdem wird im weiteren Verlauf des Codes ein Objekt wie eine liste behandelt. Das das nicht geht ist mir klar. Wieso das im code gemacht wird ist mir unklar bzw. kann das überhaupt funktionieren?
Wenn ich das ganze mit meinem eigenen Code (siehe unten) versuche nachzumachen, dann erhalte ich folgende Fehlermeldung: TypeError: 'TensorSpec' object is not subscriptable
Zunächst wird eine Attribut einer Klasse in der __init__() Methode der Klasse angelegt.
Dabei wird self.test_data mit einer Leeren liste und self.dataset mit None gleichgesetzt. Wieso wird nicht beides mit None initialisiert? Kann es dafür einen bestimmten Grund geben? Beide Variablen werden im weitern Verlauf des Codes überschrieben, also ist es doch egal wie man die Instanzvariablen initialisiert oder?
Außerdem wird im weiteren Verlauf des Codes ein Objekt wie eine liste behandelt. Das das nicht geht ist mir klar. Wieso das im code gemacht wird ist mir unklar bzw. kann das überhaupt funktionieren?
Code: Alles auswählen
class Klassenname(Parentklasse):
def __init__():
# wieso wird self.test_data mit einer leere Liste und für self.dataset mit None gleichgesetzt
self.test_data = []
self.dataset = None
# an einer anderen stelle des codes weiter untern werden die attribute festgelegt
self.dataset = tfds.loads = tfds.load('mnist', split='train', shuffle_files=True)
self.test_data = self.dataset["train"].shuffle(10).batch(10).prefetch(1)
# an einer anderen stelle versucht man auf mit element_spec auf das shape von test_dataset zuzugreifen. Folgendermaßen:
shape = self.test_data.element_spec[0].shape
# FRAGE: element_spec returnt keine liste sondern ein --> tf.TypeSpec object. Wie kann man mit self.test_data.element_spec[0] auf ein Element zugegriffen werden?
Code: Alles auswählen
data = []
liste = [[[1,2,3],[2,2,2],[21,1,1]]]
df = tf.data.Dataset.from_tensor_slices(liste)
data = df.shuffle(3).batch(2)
data.element_spec[0]