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

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

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

然而,当我使用实际的地质物理数据时,从第一个epoch开始,精度就为零。我现在完全不知道是什么导致了精度为零。我花了很多时间来学习是否犯了什么错误。由于我无法找出问题所在,我感到有点沮丧。可能有几个选项可以深入研究:

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

在现阶段,我觉得我迫切需要一些帮助。为了方便您,我已经包括了以下内容:

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

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

  1. 数据:https://drive.google.com/open?id=0BwexgJqQoeJUVlVPUkhtT210MlE

数据文件没有标题,共有11列。前七列可以作为X。我们不需要x坐标(第8列)。这一列可以忽略。基于X,我们希望预测任何应力分量(xx/xz/zz)。

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

模型的精度和损失

测试和预测数据

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


回答:

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)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注