Keras NN中的恒定精度/损失

时间:2019-06-28 13:12:57

标签: python tensorflow keras deep-learning

我正在学习深度学习,并且正在对kaggle进行泰坦尼克号挑战。

在“预处理”中,我删除了“价格”,“名称”,“机票”和“客舱”列。我通过添加相应的方法替换了“票价”和“年龄”列中的空值。我有一个热门编码性爱,Pclass(乘客舱)和登船港。添加了一个单独的列来确定乘客是否独自旅行(由同胞和父母计算)。最后,我使用了scikit的MinMaxScalar。

这里是使用的keras模型。

model = Sequential()
model.add(Dense(32, input_dim=13, activation="relu"))
model.add(Dense(64, activation="relu"))
model.add(Dense(128, activation="relu"))
model.add(Dense(256, activation="relu"))
model.add(Dropout(0.3))
model.add(Dense(512, activation="relu"))
model.add(Dense(1024, activation="relu"))
model.add(Dense(512, activation="relu"))
model.add(Dropout(0.3))
model.add(Dense(1024, activation="relu"))
model.add(Dense(2048, activation="relu"))
model.add(Dense(1024, activation="relu"))
model.add(Dropout(0.3))
model.add(Dense(512, activation="relu"))
model.add(Dense(1024, activation="relu"))
model.add(Dense(512, activation="relu"))
model.add(Dropout(0.3))
model.add(Dense(256, activation="relu"))
model.add(Dense(128, activation="relu"))
model.add(Dense(64, activation="relu"))
model.add(Dense(32, activation="relu"))
model.add(Dropout(0.3))
model.add(Dense(1, activation="sigmoid"))
model.compile(optimizer="Adam", loss='binary_crossentropy', metrics=["binary_accuracy"])

整个过程中val_binary_accuracy为常数0.6425

1 个答案:

答案 0 :(得分:0)

这与“ relu”很常见。

“ Relu”具有“恒定零”区域。如果任何一层恰好完全落入该区域,则您的模型已失效。

您可以尝试以下方法之一:

  • 再次创建模型(如果您有随机种子,请更改种子)
  • 降低学习率(但您似乎并没有使用太大的学习率)
  • 使用不同的激活方式(“ tanh”,“ Sigmoid”等)
  • 在图层之后BatchNormalization之前使用relu