神经网络为每次执行给出不同的结果
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 随机种子设置为固定值,这样将使用相同的权重,但请注意这会使您的网络产生偏差。
这就是我 运行 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 随机种子设置为固定值,这样将使用相同的权重,但请注意这会使您的网络产生偏差。