Quantcast
Channel: Recent Questions - Stack Overflow
Viewing all articles
Browse latest Browse all 18095

Tensorflow image classification model peaks after second epoch and keeps the same accuracy for the rest of training

$
0
0

I have a simple classification model with 4 different classes, stop, go, right, left traffic hand signals. After the second epoch i get the same accuracy for the rest of the epochs. I have tried using different datasets as well thinking it was a data issue.

def fit_cnn_model(X_train, Y_train, X_test, Y_test, savedir, num_layers=2,                  num_filters=64, kernel_size=3, pool_size=2, dropout_rate=0.3, learning_rate=0.0001,                  n_epochs=10, batch_size=64, verbose=2):    model = Sequential()    date_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")    for _ in range(num_layers):        model.add(Conv2D(filters=num_filters, kernel_size=kernel_size, activation='relu', padding='same', kernel_initializer='he_uniform'))        model.add(BatchNormalization())        model.add(MaxPooling2D(pool_size=pool_size))        model.add(Dropout(dropout_rate))    model.add(Flatten())    model.add(Dense(128, activation='relu'))    model.add(Dense(4, activation='softmax'))    opt = Adam(learning_rate=learning_rate)    model.compile(optimizer=opt, loss='categorical_crossentropy', metrics=['accuracy'])    history = model.fit(X_train, Y_train,                        epochs=n_epochs,                        batch_size=batch_size,                        validation_data=(X_test, Y_test),                        verbose=verbose)    model.summary()    scores = model.evaluate(X_test, Y_test, verbose=0)    print("Loss: {:.2f}".format(scores[0]))    print("Accuracy: {:.2f}%".format(scores[1] * 100))    model_path = os.path.join(savedir, 'saved_model_'+ date_time +'.h5')    model.save(model_path)    print(f"Model saved to {model_path}")    return modeldef load_data(image_folder, label_folder, target_size=(224, 224)):    # Load and sort dataset    image_files = os.listdir(image_folder)    label_files = os.listdir(label_folder)    image_files.sort()    label_files.sort()    images = []    labels = []    # Load images and labels    for img_file in image_files:        img_path = os.path.join(image_folder, img_file)        label_file = img_file.replace(".jpg", ".txt").replace(".jpeg", ".txt")        label_path = os.path.join(label_folder, label_file)        img = Image.open(img_path).resize(target_size)        img_array = np.array(img) / 255.0        images.append(img_array)        with open(label_path, 'r') as f:            label_str = f.readline().strip()            label_dict = {'stop': 0, 'continue': 1, 'left': 2, 'right': 3}            label = label_dict.get(label_str, -1)            if label == -1:                raise ValueError("Unknown label: {}".format(label_str))        labels.append(label)    images = np.array(images)    labels = np.array(labels)    labels = to_categorical(labels, 4)    X_train, X_test, Y_train, Y_test = train_test_split(images, labels, test_size=0.2)    return X_train, Y_train, X_test, Y_test

I have tried slightly tweaking the learning rate, drop out, layers, and filters. Also used a different proven dataset.


Viewing all articles
Browse latest Browse all 18095

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>