Python 基于keras的多维回归

Python 基于keras的多维回归,python,neural-network,keras,regression,prediction,Python,Neural Network,Keras,Regression,Prediction,我想用keras根据n个输入来预测x,y坐标。我不清楚为什么我的人际网络在经历了大约5个时代后仍无法改善。我不明白,如果我的输入变量在5-14x和5-11y之间变化,为什么网络值如x=2.9和y=2.1。我怎样才能得到更好的预测 数据: 网络: from keras.models import Sequential from keras.layers import * model = Sequential() model.add(Dense(16, input_dim = ipad_test_

我想用keras根据n个输入来预测x,y坐标。我不清楚为什么我的人际网络在经历了大约5个时代后仍无法改善。我不明白,如果我的输入变量在5-14x和5-11y之间变化,为什么网络值如x=2.9和y=2.1。我怎样才能得到更好的预测

数据:

网络:

from keras.models import Sequential
from keras.layers import *

model = Sequential()
model.add(Dense(16, input_dim = ipad_test_numpy_input.shape[1], activation='linear'))
model.add(Dense(8, activation='linear'))
model.add(Dense(2, activation='linear'))
model.compile(loss='mean_squared_error', optimizer='adam')

model.fit(ipad_numpy_input, ipad_numpy_labels, epochs=50, batch_size=5)
score = model.evaluate(ipad_test_numpy_input, ipad_test_numpy_labels, batch_size=5)

尝试将前两层的激活更改为

activation='relu'

看看这是否能通过引入非线性来改善情况。你现在只是在执行一系列的线性变换,所以你并没有以任何方式真正利用神经网络的能力。还有很多其他原因导致事情可能不如你所希望的那么顺利,但它们有点超出了stackoverflow答案的范围。如果你有一个足够大的数据集,那么正则化将是开始阅读的第一件好事情。

谢谢你的回复。我把最初的图层改成了relu,但是我收到了更糟糕的结果。我确实分为ipad_测试和ipad_数据。我将研究正则化。因此,现在我尝试在第一层中添加批处理规范化和无序化。然后我做了一个网格搜索,包括批量大小、时代、学习率、动量、辍学、动量、核正则化器l1和l2、每层神经元、层数、激活函数、初始化以及神经元从一层到下一层的关系。在这一切之后,我取得了进步,但在一个9x9m的房间里却没有足够的结果2-3m的准确度,我能做什么?你的数据集有多大?3864个条目。你能推荐更多吗?我的网格搜索结果显示,这些参数是迄今为止最好的:神经元=550,优化器='adam',激活='relu',学习速率=0.001,动量=0.004,初始模式='he_uniform',辍学速率=0.0,n_层=3,神经元收缩速率=0.5,内核正则化器=正则化器。l20.0这有点取决于问题,但这实际上接近或低于使用深度学习体系结构的下限。如果你能很容易地获得更多的数据,这可能会有所帮助:samples_min=parameters^2是一个非常粗略的经验法则……根据这个计算,你的550个神经元网络至少需要300000个样本,不过你可能有550多个参数。我可能更喜欢不同的方法,例如,你有一个普通最小二乘法的基线吗?在下面的答案之上,你需要在将数据输入神经网络之前将其标准化。。。
activation='relu'