我的名字是萨伯。我的研究兴趣是计算地球物理学。最近,我开始研究地球物理学的深度学习应用程序。在这项工作的一部分中,我使用“Tensorflow”和“Keras”玩了一些玩具示例(螺旋数据)。经过一些尝试和错误,我获得了 97% 的准确率。顺便说一句,所有的问题都是回归。
在这项工作中,我想根据一些物理参数(温度、密度、p 波、s 波速度、热能和深度)来预测任何应力分量。
但是,当我使用实际的地球物理数据时,我从第一个历元开始得到的精度为零。我现在不知道是什么导致精度为零。我花了很多时间来了解我是否犯了任何错误。我有点沮丧,因为我无法找出问题所在。可能有几个选项可供挖掘:
- 要么我的数据没有什么可学习的,要么
- 数据预处理错误。
在这个阶段,我觉得我迫切需要一些帮助。为了您的方便,我包括:
- 代码(“Tensorflow”和“Keras”): https://github.com/msahamed/deep_learning_stress_model
该存储库有三个文件。在这三个“ipynb”中,您可以查看“predict_stress_keras.ipynb”或“predict_stress_tensorflow.ipynb”。代码非常简单。我已经写了所有必要的评论。
数据文件没有任何标题,有 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)
关于machine-learning - Keras 神经网络模型精度始终为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44395913/