2017-08-30 35 views
2

これは私がkerasとtensorflowをバックエンドとして実行している正確なコードです。同じプログラムを実行するたびに、トレーニング結果が異なります。 400回の反復で100%の精度が得られ、200回で数回の精度が得られることもあります。ニューラルネットワークは実行ごとに異なる結果を返します

training_data = np.array([[0,0],[0,1],[1,0],[1,1]], "float32") 
target_data = np.array([[0],[1],[1],[0]], "float32") 

model = Sequential() 
model.add(Dense(4, input_dim=2, activation='relu')) 
model.add(Dense(1, activation='sigmoid')) 

model.compile(loss='mean_squared_error', 
       optimizer='adam', 
       metrics=['binary_accuracy']) 

model.fit(training_data, target_data, epochs=500, verbose=2) 


Epoch 403/500 
0s - loss: 0.2256 - binary_accuracy: 0.7500 

なぜ列車データが修正されたために結果が変更されるのですか?いくつかの説明を非常に感謝します。

答えて

5

トレーニングセットは固定されていますが、ニューラルネットワークの初期の重みを小さな値のランダムな値に設定していますので、ネットワークをトレーニングするたびに若干異なる結果が得られます。

再現性のある結果が必要な場合は、numpy.random.seedのnumpyランダムシードを固定値に設定すると、同じ重みが使用されますが、これはネットワークにバイアスをかける可能性があることに注意してください。

関連する問題