Keras question



Hello,

Happy new year! I wish you a happy, productive, and fruitful new year.

I just have a Keras question and through you might have an idea on it, especially that I have been trying to solve the issue for a while now but couldn't yet solve the issue.

The following code always predicts the same class. I tried balancing the training dataset and used different data (i.e. melanoma vs. nevus, cats vs. dogs), but always having only "1" class predicted. 

from keras import layers
    from keras import models
    from keras import optimizers
    from keras.preprocessing.image import ImageDataGenerator
    from sklearn.metrics import roc_curve
    from sklearn.metrics import auc
    import cv2
    import numpy as np
    import os
    
    train_directory = '/train'
    validation_directory = '/valid'
    test_directory = '/test'
    results_directory = '/results'
    correct_classification = 0
    number_of_test_images = 0
    labels = []
    prediction_probabilities = []
    
    model = models.Sequential()
    
    model.add(layers.Conv2D(32,(3,3),activation='relu',input_shape=(512,512,3)))
    model.add(layers.MaxPooling2D(2,2))
    model.add(layers.Conv2D(64,(3,3),activation='relu'))
    model.add(layers.MaxPooling2D(2,2))
    model.add(layers.Conv2D(128,(3,3),activation='relu'))
    model.add(layers.MaxPooling2D(2,2))
    model.add(layers.Conv2D(256,(3,3),activation='relu'))
    model.add(layers.MaxPooling2D(2,2))
    model.add(layers.Conv2D(512,(3,3),activation='relu'))
    model.add(layers.MaxPooling2D(2,2))
    
    model.add(layers.Flatten())
    model.add(layers.Dense(1024,activation='relu'))
    model.add(layers.Dense(1,activation='sigmoid'))
    
    model.compile(loss='binary_crossentropy',optimizer='rmsprop',metrics=['acc'])
        
    train_data = ImageDataGenerator(rescale=1.0/255)
    validation_data = ImageDataGenerator(rescale=1.0/255)
    
    train_generator = train_data.flow_from_directory(train_directory,target_size=(512,512),batch_size=20,class_mode='binary')
    validation_generator = validation_data.flow_from_directory(validation_directory,target_size=(512,512),batch_size=20,class_mode='binary')
    
    history = model.fit_generator(train_generator,
    steps_per_epoch=10,
    epochs=10,
    validation_data=validation_generator,
    validation_steps=5)
    
    model.save('my_model.h5')
    
    for root, dirs, files in os.walk(test_directory):
    for file in files:
    img = cv2.imread(root + '/' + file)
    img = cv2.resize(img,(512,512),interpolation=cv2.INTER_AREA)
    img = np.expand_dims(img, axis=0)
    img = img/255.0
    if os.path.basename(root) == 'nevus':
    label = 1
    elif os.path.basename(root) == 'melanoma':
    label = 0
    labels.append(label)
    img_class = model.predict_classes(img)
    img_class_probability = model.predict(img)
    prediction_probability = img_class_probability[0]
    prediction_probabilities.append(prediction_probability)
    prediction = img_class[0]
    if prediction == label:
    correct_classification = correct_classification + 1

Any ideas on how the issue could be solved?

Thanks a lot, and appreciate you kind support.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]