神经网络为每次执行给出不同的结果

Neural network gives different results for each execution

这就是我 运行 Keras 和 TensorFlow 作为后端的确切代码。每个运行同一个程序,训练结果都不一样。有时它在第 400 次迭代中获得 100% 的准确率,有时在第 200 次迭代中获得 100% 的准确率。

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

为什么火车数据是固定的,每次执行的结果都不同?非常感谢一些解释。

训练集是固定的,但是我们将神经网络的初始权重设置为一个小范围内的随机值,所以每次训练网络都会得到略微不同的结果。

如果您想要可重现的结果,您可以将带有 numpy.random.seed 的 numpy 随机种子设置为固定值,这样将使用相同的权重,但请注意这会使您的网络产生偏差。