在训练数据集时,不知道出了什么问题。 Keras模型适合

时间:2016-03-02 16:53:10

标签: python deep-learning keras

我刚刚开始使用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

1 个答案:

答案 0 :(得分: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])