Posiadam 3 katalogi zdjęć. Przedmioty ułożone w poprawnej kolejności, przedmioty ułożone w niepopranej kolejności i w ogóle brak przedmiotów. Próbuje do tego stworzyć model który będzie w stanie po załadowaniu zdjęcia określi czy przedmioty poukładane są poprawnie, czy są poukładane źle czy ich w ogóle na zdjęciu nie ma. Niestety nie wiem dlaczego model zawsze ostateczną skuteczność ocenia na 0. Nie ważne jaka będzie liczba pokoleń treningowych jak ustawie batch_size ciągle otrzymuję 0.
X_train = np.concatenate((X_train_zgodne, X_train_niezgodne, X_train_brak), axis=0)
y_train = np.concatenate((y_train_zgodne, y_train_niezgodne, y_train_brak), axis=0)
y_train = to_categorical(y_train)
split_index = int(len(X_train) * 0.7)
X_train, X_test = X_train[:split_index], X_train[split_index:]
y_train, y_test = y_train[:split_index], y_train[split_index:]
model = Sequential([
Conv2D(32, (3, 3), activation='relu', input_shape=(300, 300, 3)),
MaxPooling2D((2, 2)),
Conv2D(64, (3, 3), activation='relu'),
MaxPooling2D((2, 2)),
Conv2D(128, (3, 3), activation='relu'),
MaxPooling2D((2, 2)),
Flatten(),
Dense(128, activation='relu'),
Dense(3, activation='softmax') # Warstwa wyjściowa z trzema klasami: zgodne, niezgodne, brak przewodu
])
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])
model.fit(X_train, y_train, epochs=10, batch_size=36, validation_split=0.2)
test_loss, test_acc = model.evaluate(X_test, y_test)
print('Test accuracy:', test_acc)