2

我刚刚开始使用 Keras,并尝试使用 Keras 深度学习套件训练模型。一直工作到运行纪元,但在它之后崩溃。

    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

4

1 回答 1

0

看起来你有两个类,一个正类和一个负类,所以正类标签是 1 减去负类标签。在这种情况下,您可以丢弃负类标签并使其成为单类问题:

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

或者,您仍然可以在两个类上训练模型,并在 AUC 计算中使用正类:

roc_auc_score(y_test[:, 1],y_pre[:, 1])
于 2016-05-01T18:41:31.323 回答