私はkeras(backened tensorflow)でニューラルネットワークを作成しようとします。 私は4つの入力変数と2つの出力変数を持っています: 利用できません予測のためのkerasを持つMLP
私はTestsetへの予測をしたいです。
これは私のコードです:私は、スクリプトを実行すると
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/から、 'outputs = [b1、b3、b3]'と言ったので、出力はデータのセットではなく、値のセットでなければなりません。それを転置することでそれを行うことができます。 – malioboro
SGDオプティマイザを定義しましたが、実際には使用していないことに注意してください。コンパイル時にAdaptative Momentum(Adam)を使用します。 – Nathan
ありがとうございました!私は私のポストでそれを変更しました。私の元のスクリプトでは正しいです。どのオプティマイザを好むでしょうか? –