【发布时间】: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