2016-03-02 5 views
2

Я только начал использовать Keras и пытался обучить модель с помощью набора Keras для глубокого обучения. Работает до тех пор, пока не будут запущены эпохи, но падает сразу после него.Не знаю, что происходит неправильно во время набора учебных материалов. Keras Model Fit

np.random.seed(1778) # for reproducibility 
    need_normalise=True 
    need_validataion=True 
    nb_epoch=2#8 

    #Creating model 
    model = Sequential() 
    model.add(Dense(512, input_shape=(dims,))) 
    model.add(PReLU()) 
    model.add(BatchNormalization()) 
    model.add(Dropout(0.5)) 

    model.add(Dense(nb_classes)) 
    model.add(Activation('softmax')) 
    opt=Adadelta(lr=1,decay=0.995,epsilon=1e-5) 
    model.compile(loss='binary_crossentropy', optimizer=opt) 
    auc_scores=[] 
    best_score=-1 
    best_model=None 
    print('Training model...') 

    if need_validataion: 
     for i in range(nb_epoch): 
     #early_stopping=EarlyStopping(monitor='val_loss', patience=0, verbose=1) 
     #model.fit(X_train, y_train, nb_epoch=nb_epoch,batch_size=256,validation_split=0.01,callbacks=[early_stopping]) 
      model.fit(X_train, y_train, nb_epoch=2,batch_size=256,validation_split=0.15) 
      y_pre = model.predict_proba(X_valid) 
      scores = roc_auc_score(y_valid,y_pre) 
      auc_scores.append(scores) 
      print (i,scores) 
      if scores>best_score: 
       best_score=scores 
       best_model=model 
     plt.plot(auc_scores) 
     plt.show() 
    else: 
     model.fit(X_train, y_train, nb_epoch=nb_epoch, batch_size=256) 
    y_pre = model.predict_proba(X_test)[:,1] 
    print roc_auc_score(y_test,y_pre) 

Ошибка ПОЛУЧАЛ: Я вставил его здесь. Пожалуйста, взгляните на это. http://pastebin.com/dSw9ckkk

+0

Вы можете попробовать распечатать y_valid и y_pre перед вычислением баллов? И скажите мне, какие результаты вы получите. – JeD

ответ

0

Похоже, что у вас есть два класса, положительный класс и отрицательный класс, так что метки положительного класса 1 минус метки отрицательного класса. В этом случае, вы можете отказаться от ярлыков негативного класса и сделать это проблема одного класса:

model.add(Dense(1), activation='sigmoid') # instead of Dense(nb_classes) and Activation('softmax') 

В качестве альтернативы, вы можете тренировать модель на обоих классах и просто использовать положительный класс в ППК расчета:

roc_auc_score(y_test[:, 1],y_pre[:, 1]) 

 Смежные вопросы

  • Нет связанных вопросов^_^