machine-learning - Keras 神经网络模型精度始终为零

标签 machine-learning tensorflow neural-network deep-learning keras

我的名字是萨伯。我的研究兴趣是计算地球物理学。最近,我开始研究地球物理学的深度学习应用程序。在这项工作的一部分中,我使用“Tensorflow”和“Keras”玩了一些玩具示例(螺旋数据)。经过一些尝试和错误,我获得了 97% 的准确率。顺便说一句,所有的问题都是回归。

在这项工作中,我想根据一些物理参数(温度、密度、p 波、s 波速度、热能和深度)来预测任何应力分量。

但是,当我使用实际的地球物理数据时,我从第一个历元开始得到的精度为零。我现在不知道是什么导致精度为零。我花了很多时间来了解我是否犯了任何错误。我有点沮丧,因为我无法找出问题所在。可能有几个选项可供挖掘:

  • 要么我的数据没有什么可学习的,要么
  • 数据预处理错误。

在这个阶段,我觉得我迫切需要一些帮助。为了您的方便,我包括:

  1. 代码(“Tensorflow”和“Keras”): https://github.com/msahamed/deep_learning_stress_model

该存储库有三个文件。在这三个“ipynb”中,您可以查看“predict_stress_keras.ipynb”或“predict_stress_tensorflow.ipynb”。代码非常简单。我已经写了所有必要的评论。

  • 数据:https://drive.google.com/open?id=0BwexgJqQoeJUVlVPUkhtT210MlE
  • 数据文件没有任何标题,有 11 列。 X 可以是前七列。我们不需要 x 坐标(8 列)。该列可以忽略。基于 X,我们想要预测任何应力分量 (xx/xz/zz)。

    更新: 即使忽略这个回归问题的准确性,所有的预测结果都是相同的(见图)

    Accuracy and loss of the model

    Test and predicted data

    请给我一些反馈。感谢您的帮助。

    最佳答案

    Matias Valdenegro 是对的 - 准确性在这种情况下没有意义,并且预期值为零。请参阅此线程:https://github.com/fchollet/keras/issues/108

    关于您的代码的一些快速建议:

    10 层太多了。从最多 2 或 3 层开始。 从 Keras 默认值开始,仅在必要时进行更改。

    尝试这样的事情并从那里改进:

    model = Sequential()
    model.add(Dense(units = 64, activation = 'tanh', input_dim = 7))
    model.add(Dense(units = 32, activation = 'tanh'))
    model.add(Dense(units = 16, activation = 'tanh'))
    model.add(Dense(units = 1, activation="linear"))
    model.compile(optimizer = 'rmsprop', loss = 'mean_absolute_error')
    
    history = model.fit(X_train, Y_train, batch_size = 2048, epochs = 20, 
               validation_split= 0.2, verbose=0)
    
    score = model.evaluate(X_test, Y_test, batch_size=2048)
    print(score)
    

    关于machine-learning - Keras 神经网络模型精度始终为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44395913/

    相关文章:

    c++ - bazel-run 不会加载在 bazel 构建时加载的所有 tensorflow 包

    tensorflow - 使用rejection_resample() 和Dataset Api

    python - arg_scope 实际上是做什么的?

    python - 对于小数据集中的非常大的值,梯度下降不会收敛

    machine-learning - 如何加速前馈、基于梯度的反向传播神经网络的学习

    python - 如何使用经过训练的模型编写 keras 以读取我自己的图片?

    python - Pytorch ValueError : Expected target size (2, 13),调用 CrossEntropyLoss 时得到 torch.Size([2])

    Hadoop:用多棵树(采样说 N,说 x RandomTree)训练大数据(以 GB 为单位)并测试

    machine-learning - 在K-Means聚类算法(sklearn)中如何将欧氏距离覆盖到某个距离

    neural-network - 如何在tensorflow.js中创建自己的层