【发布时间】:2017-05-26 19:30:55
【问题描述】:
我正在尝试根据 kaggle 上希格斯玻色子挑战的数据训练模型。我决定做的第一件事是创建一个简单的 keras 模型。我尝试了不同的层数和宽度、不同的成本函数、不同的优化器、不同的神经元函数,但训练集的准确率始终在 0.65-0.7 范围内。我真的不明白为什么。这是我的一个模型的例子,它工作得非常奇怪:
from keras.layers import Dense, merge, Activation, Dropout
from keras.models import Model
from keras.models import Sequential
from keras.optimizers import SGD
model = Sequential()
model.add(Dense(600, input_shape=(30,),activation="relu"))
model.add(Dropout(0.5))
model.add(Dense(400, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(100, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(1, activation='sigmoid'))
sgd = SGD(lr=0.01, decay=1e-6)
model.compile(optimizer='rmsprop',loss='binary_crossentropy',metrics=['accuracy'])
model.fit(train,labels,nb_epoch=1,batch_size=1)
我也尝试了更大的模型,也得到了这样的准确性。请告诉我我做错了什么。
编辑
我已经尝试用 100 个 epoch 和批量大小 0f 100 训练这个模型,并且损失等于 4.9528,准确度再次达到 0.6924。而且它总是为每个示例输出零。
【问题讨论】:
-
您的编辑评论显示您的数据不平衡,这是一个问题。要么平衡数据中的两个类,要么在 fit 函数中使用 class_weight。
标签: machine-learning neural-network keras