我嘗試創建一個帶有keras(backened tensorflow)的神經網絡。 我有4個輸入和2個輸出變量: 不可用MLP與keras預測
我想做一個測試集預測不可用。
這是我的代碼:
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)
當我運行該腳本,精度爲1.000每一個時代之後,我得到的結果總是相同的輸出爲每個輸入對:
[-5.83297 68.2967]
[-5.83297 68.2967]
[-5.83297 68.2967]
...
有沒有人知道我的代碼中的錯誤是什麼?
我不確定,但我想你可以嘗試重塑你的Y變量。從https://keras.io/models/model/它說'輸出= [b1,b3,b3]'所以我認爲輸出應該是值的設置,而不是數據的設置。你可以通過轉置來做到這一點。 – malioboro
爲了確保您注意到它:您已經定義了SGD優化器,但實際上並未使用它:在編譯期間使用Adaptative Momentum(Adam)。 – Nathan
謝謝!我在帖子中改變了它。在我原來的腳本中是正確的。你更喜歡哪個優化器? –