我正在尝试使用简单的神经网络来预测使用 keras-1.0.6 的二进制目标 . 输出在第一个时代之后饱和 . 我尝试使用学习率(从0.1到1e-6),SGD优化器的衰减和动量以及层(10-512个隐藏的神经元和1-2个隐藏层)以及它们的网络激活功能,但是没有用 - 预测准确性是一样的 .

我的训练集有形状(13602,115),我的验证集有形状(3400,115) . 目标变量y_train和y_test具有编码为1和0的值(60%是1并且40%是0) . 起初,数据没有标准化,但是当我将其标准化时,我得到了相同的结果 .

验证输出,我看到模型只预测了1个类 . 有时它只预测1和其他时间只有0(当我调整模型时) .

我还试图在形状(n_sample,2)中编码目标变量,但输出是相同的 .

我在这里跟踪了一些问题,谷歌搜索表明调整学习率并且不使用'softmax'激活但是无法改善结果 .

我试过的一些模型如下:

最简单的模型:

model.add(Dense(1, input_dim=X_train.shape[1], activation='sigmoid'))

型号2:

model = Sequential()
model.add(Dense(512, input_dim=X_train.shape[1]))
model.add(Activation('relu'))
model.add(Dropout(0.2))
model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dropout(0.2))
model.add(Dense(1))
model.add(Activation('sigmoid'))

模型3

model.add(Dense(64, input_dim=X_train.shape[1], init='uniform', activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(1, activation='sigmoid'))

模型4

model.add(Dense(64, input_dim=X_train.shape[1], init='uniform', activation='sigmoid'))
model.add(Dense(1, input_dim=X_train.shape[1], activation='sigmoid'))

并编译和拟合模型:

sgd = SGD(lr=0.01, decay=0.1, momentum=0.0, nesterov=True)
model.compile(optimizer=sgd, loss='binary_crossentropy', metrics=['accuracy'])
model.fit(X_train, y_train2, nb_epoch=5, batch_size=50, validation_split=0.2)
model.predict(X_test)

输出给出[0,0,0,0,0,0,0,...]或[1,1,1,1,1,1,1,1,...]

有没有人知道这里发生了什么?