【问题标题】:Why the accuracy of the neural network stops increasing为什么神经网络的准确性停止增加
【发布时间】:2020-05-15 10:52:10
【问题描述】:

我正在尝试解决 Kaggle 上的泰坦尼克号竞赛。但模型准确率不会超过 80%。 我尝试更改一些隐藏节点、多个时期,还尝试应用批量标准化、dropout、更改权重初始化,但仍然是 80%。我究竟做错了什么? 这是我下面的代码:

model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Dense(10, input_shape=(5,), kernel_initializer='he_normal', activation='relu'))
model.add(tf.keras.layers.BatchNormalization())
model.add(tf.keras.layers.Dense(20, kernel_initializer='he_normal', activation='relu'))
model.add(tf.keras.layers.Dropout(0.3))
model.add(tf.keras.layers.BatchNormalization())
model.add(tf.keras.layers.Dense(2, kernel_initializer=tf.keras.initializers.GlorotNormal(), activation='sigmoid'))

model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

train_scores = model.fit(train_features, train_labels, epochs=200, batch_size=64, verbose=2)

这里是最后几个时期的图片准确性:model accuracy

我该如何改进它?

【问题讨论】:

  • 是什么让你觉得你做错了什么?解释为什么网络提供特定性能并不是真正的编程问题
  • 考虑不同的模型架构。收集/生成更多数据。降低学习率。查看fastai 获取灵感。
  • 代码似乎没问题。请考虑在机器学习论坛上发布问题。
  • 您的标签是一次性编码的吗?
  • @desertnaut 是的

标签: python tensorflow machine-learning keras


【解决方案1】:

您可以尝试规范化数据,通常在实现神经网络时,我们不需要规范化我们的数据(如果网络很深),但由于这里我们只使用 3 层,我想规范化数据可能会有所帮助。

我建议将您的训练数据再次拆分为训练和验证集,并使用 K-fold 交叉验证(我不确定这个!我也是这个领域的新手)。

但总的来说,如果准确度是恒定的,那么最好的方法是改变训练数据(我的意思是对其进行归一化或尝试用平均值估算 NaN 值(而不是将 设置为 0))。

【讨论】:

    猜你喜欢
    • 2015-09-03
    • 2017-08-31
    • 2020-04-13
    • 2020-06-03
    • 1970-01-01
    • 2018-03-11
    • 2017-11-17
    • 2016-08-02
    • 2018-01-10
    相关资源
    最近更新 更多