Back

Explore Courses Blog Tutorials Interview Questions
0 votes
2 views
in Machine Learning by (19k points)

I am working on a simple CNN classifier using keras with the tensorflow background.

def cnnKeras(training_data, training_labels, test_data, test_labels, n_dim):

print("Initiating CNN")

seed = 8

numpy.random.seed(seed)

model = Sequential()

model.add(Convolution2D(64, 1, 1, init='glorot_uniform', border_mode='valid',

                        input_shape=(16, 1, 1), activation='relu'))

model.add(MaxPooling2D(pool_size=(1, 1)))

model.add(Convolution2D(32, 1, 1, init='glorot_uniform', activation='relu'))

model.add(MaxPooling2D(pool_size=(1, 1)))

model.add(Dropout(0.25))

model.add(Flatten())

model.add(Dense(128, activation='relu'))

model.add(Dropout(0.5))

model.add(Dense(64, activation='relu'))

model.add(Dense(1, activation='softmax'))

# Compile model

model.compile(loss='sparse_categorical_crossentropy',

              optimizer='adam', metrics=['accuracy'])

model.fit(training_data, training_labels, validation_data=(

    test_data, test_labels), nb_epoch=30, batch_size=8, verbose=2)

scores = model.evaluate(test_data, test_labels, verbose=1)

print("Baseline Error: %.2f%%" % (100 - scores[1] * 100))

# model.save('trained_CNN.h5')

return None

It is a binary classification problem, but I keep getting the message Received a label value of 1 which is outside the valid range of [0, 1) which does not make any sense to me. Any suggestions?

1 Answer

0 votes
by (33.1k points)

The range (0, 1) means every number between 0 and 1, excluding 1. So 1 is not a value in the range [0, 1).

The issue could be due to your choice of the loss function. 

For binary classification, binary_crossentropy should be a better choice.

For more details on CNN, study Artificial Intelligence Course. For more details on Keras, learn Machine Learning Course.

Hope this answer helps.

Browse Categories

...