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

ポジティブ クラスとネガティブ クラスの 2 つのクラスがあるように見えるため、ポジティブ クラス ラベルは 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 に答える