0 votes
1 view
in Machine Learning by (15.5k 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.2k 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.

Welcome to Intellipaat Community. Get your technical queries answered by top developers !


Categories

...