【问题标题】:MLP with keras for prediction带有 keras 的 MLP 进行预测
【发布时间】:2018-01-06 05:31:08
【问题描述】:

我尝试使用 keras(支持的 tensorflow)创建神经网络。 我有 4 个输入和 2 个输出变量: 不可用

我想对不可用的测试集进行预测。

这是我的代码:

from keras import optimizers
from keras.models import Sequential 
from keras.layers import Dense 
import numpy
numpy.random.seed(7)
dataset = numpy.loadtxt("trainingsdata.csv", delimiter=";") 
X = dataset[:,0:4] 
Y = dataset[:,4:6]
model = Sequential() 
model.add(Dense(4, input_dim=4, init='uniform', activation='sigmoid')) 
model.add(Dense(3, init='uniform', activation='sigmoid')) 
model.add(Dense(2, init='uniform', activation='linear'))
sgd = optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='mean_squared_error', optimizer='sgd', metrics=['accuracy'])
model.fit(X, Y, epochs=150, batch_size=10, verbose=2) 
testset = numpy.loadtxt("testdata.csv", delimiter=";") 
Z = testset[:,0:4] 
predictions = model.predict(Z) 
print(predictions)

当我运行脚本时,每个 epoch 后的准确度都是 1.000,结果我得到的结果对于每个输入对总是相同的输出:

[-5.83297 68.2967] 
[-5.83297 68.2967] 
[-5.83297 68.2967] 
... 

有人知道我的代码有什么问题吗?

【问题讨论】:

  • 我不确定,但我认为您可以尝试重塑您的 Y 变量。从keras.io/models/model 它说outputs=[b1, b3, b3] 所以我认为输出应该是一组值,而不是一组数据。你可以通过转置来做到这一点。
  • 只是为了确保您注意到它:您定义了 SGD 优化器,但实际上并没有使用它:您在编译期间使用了 Adaptative Momentum (Adam)。
  • 谢谢!我已经在我的帖子中更改了它。在我的原始脚本中是正确的。您更喜欢哪种优化器?

标签: python machine-learning keras


【解决方案1】:

我建议您在将数据输入模型之前对其进行标准化/标准化,然后检查您的模型是否开始学习。

看看 scikit-learn 的 StandardScaler

看看into this SO thread,了解如何正确fit_transform您的训练数据和仅transform您的测试数据。

还有本教程使用 scikit-learn 的数据预处理管道:http://machinelearningmastery.com/regression-tutorial-keras-deep-learning-library-python/

【讨论】:

  • 感谢您的链接。我已经阅读了 Brownlee 博士的许多教程,但还没有找到这个!
【解决方案2】:

如果输入变量的规模彼此相差太大,神经网络就会遇到困难。将 10、1000、100000 作为相同的输入会导致梯度向任何较大的值塌陷。其他值实际上不提供任何信息。

一种方法是简单地通过常数重新调整输入变量。您可以简单地将 206000 除以 100000。尝试让所有变量的位数大致相同。对于网络来说,大数字比小数字要难一些。

【讨论】:

  • 谢谢,它提供了我现在可以使用的信息!!我的神经网络的结果并不准确,但并不总是和以前一样。
  • 乐于助人!
猜你喜欢
  • 2019-08-19
  • 2020-02-23
  • 2018-09-24
  • 2017-09-05
  • 1970-01-01
  • 2017-04-12
  • 2020-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多