Neuronales Netz -Frage zum Code?
Ich möchte ein Neuronales Netz erstellen, dass namen erkennt. Es gibt eine Datei mit den Bildnamen in der Spalte Filename und eine Spalte mit den "Labels". Die andere Datei erhält die wirklichen Bilddateine. Ich muss ja nun die Bildnamen mit den Bilddateien ersetzen? Wie mach ich das ? Bei meinem Code kommt immer nur Fehler beim öffnen der Datei, bzw. dass die Dateien nicht vorhanden sind. Der Ordenerpfad stimmt aber. Kann mir jemand helfen ?? import os import numpy as np import pandas as pd import tensorflow as tf from sklearn.model_selection import train_test_split from PIL import Image # Daten laden train = pd.read_csv('written_name_train_v2.csv') # Absoluter Pfad zum Ordner mit den Bilddateien folder_path = os.path.join('train') # Überprüfen, ob der Ordner existiert if not os.path.exists(folder_path): raise ValueError(f"Ordnerpfad nicht gefunden: {folder_path}") # Liste für die Bilddaten und Labels images = [] labels = [] # Alle Bilddateien im Ordner durchlaufen for file_name, label in zip(train['FILENAME'], train['IDENTITY']): # Pfad zum aktuellen Bild erstellen image_path = os.path.join(folder_path, str(file_name)) # Bild öffnen und zu einem Numpy-Array konvertieren try: img = Image.open(image_path) img_np = np.array(img) # Bild zur Liste hinzufügen images.append(img_np) # Label zur Liste hinzufügen labels.append(label) except Exception as e: print(f"Fehler beim Öffnen der Datei {image_path}: {e}") # Konvertiere Listen in NumPy-Arrays X = np.array(images) y = np.array(labels) # Trainings- und Testdaten aufteilen X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=12) # Neuronales Netzwerk erstellen model = tf.keras.Sequential([ tf.keras.layers.Flatten(input_shape=(X_train.shape[1:])), tf.keras.layers.Dense(units=128, activation='relu'), tf.keras.layers.Dropout(0.5), tf.keras.layers.Dense(units=64, activation='relu'), tf.keras.layers.Dropout(0.5), tf.keras.layers.Dense(units=32, activation='relu'), tf.keras.layers.Dense(units=1, activation='sigmoid') ]) # Modell kompilieren optimizer = tf.keras.optimizers.Adam(learning_rate=0.001) model.compile(optimizer=optimizer, loss='binary_crossentropy', metrics=['accuracy']) # Modell trainieren history = model.fit(X_train, y_train, batch_size=40, epochs=10, validation_split=0.2) # Modell evaluieren y_pred = model.predict(X_test) accuracy = np.mean((y_pred.round() == y_test).astype(int)) print(f"Test Accuracy: {accuracy:.2%}")