2017-05-24 3 views
1

나는 tensorflow 배경을 가진 keras를 사용하는 간단한 cnn 분류 자에서 작업하고 있습니다.유효한 값 범위가 [0, 1] 인 레이블 값 1을 받았습니다. - Python, Keras

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 

그것은 이진 분류 문제,하지만 난 나에게 어떤 이해가되지 않습니다 메시지 Received a label value of 1 which is outside the valid range of [0, 1) 점점 계속. 어떤 suggesstions?

답변

8

Range [0, 1)은 0과 1 사이의 모든 숫자를 의미하며,을 제외한 을 의미합니다. 따라서 1은 [0, 1] 범위의 값이 아닙니다.

나는 100 % 확신 할 수는 없지만 귀하의 선택 손실 기능 때문일 수 있습니다. 이진 분류의 경우 binary_crossentropy을 선택하는 것이 좋습니다.

관련 문제