Anzahl der Datensätze in einem Dataset ermitteln
1 | anzahl = dataset.cardinality().numpy() |
Dataset in Train- und Validation-Datasets aufteilen
Ein Dataset muss z.B. in 2 Datasets gesplittet werden um ein Trainingsdataset (im Beispiel 80% des ursprünglichen Datasets) und ein Validationsdataset (im Beispiel 20% des ursprünglichen Datasets) zu erzeugen.
1 2 3 4 5 | total_size = dataset.cardinality().numpy() train_size = int (total_size * 0.8 ) train_dataset = dataset.take(train_size) val_dataset = dataset.skip(train_size) |
String-Liste in Dataset umwandeln und zurückwandeln
1 2 3 4 5 6 7 8 9 10 | labels = [ 0 , 1 , 0 ] texte = [ "Hallo" , "Welt" , "TensorFlow" ] # Dataset erstellen dataset = tf.data.Dataset.from_tensor_slices((texte, labels)) # Zurück in Listen umwandeln texte_liste = [x.numpy().decode( "utf-8" ) for x, y in dataset] labels_liste = [ int (y.numpy()) for x, y in dataset] |
Zahlen-Listen in Dataset umwandeln und zurückwandeln
1 2 3 4 5 6 7 8 9 10 11 12 13 | labels = [ 0 , 1 , 0 ] data = [[ 1 , 2 ], [ 3 , 4 ], [ 5 , 6 ]] # Dataset erstellen dataset = tf.data.Dataset.from_tensor_slices((data, labels)) # Zurück in Listen umwandeln data_list = [] label_list = [] for x, y in dataset: data_list.append(x.numpy().tolist()) # x ist ein Tensor → Liste label_list.append( int (y.numpy())) |
Input-Dataset und Label-Dataset zusammenfügen bzw. wieder zerlegen
Um zwei Datasets, die z.B. einmal die Inputdaten enthalten und einmal die Labeldaten enthalten, zu einem Dataset zusammenzufügen, kann die zip()-Methode genutzt werden. Für das Zerlegen eines Datasets (mit zwei Sub-Datasets) in zwei Datasets gibt es keine „unzip()“-Methode – daher muss man den Umweg über die map()-Methode mit einer kleinen lambda-Funktion gehen.
1 2 3 4 5 6 | tf.data.Dataset. zip ((dataset_data, dataset_label)) # Und wieder zerlegen # Jeweils nur das erste oder zweite Element aus dem Tupel extrahieren dataset_data = zipped_ds. map ( lambda data, label: data) dataset_labels = zipped_ds. map ( lambda data, label: label) |