Não sei o que está acontecendo de errado, enquanto conjunto de dados de treinamento. Keras Modelo Fit

votos
2

Eu só comecei a usar Keras e estava tentando treinar um modelo usando Keras kit aprendizagem profunda. Obras até as épocas são Gerido mas cai logo após isso.

    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)

Erro Recebido: Eu colei aqui. Por favor, dê uma olhada nisso. http://pastebin.com/dSw9ckkk

Publicado 02/03/2016 em 14:53
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

Parece que você tem duas classes, uma classe positiva e uma classe negativa, de modo que os rótulos de classe positivos são 1 menos os rótulos de classe negativos. Nesse caso, você pode descartar os rótulos de classe negativos e torná-lo um problema de classe única:

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

Alternativamente, você ainda pode treinar o modelo em ambas as classes e usar apenas a classe positiva no cálculo AUC:

roc_auc_score(y_test[:, 1],y_pre[:, 1])
Respondeu 01/05/2016 em 17:41
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more