神经网络为每次执行提供不同的结果

时间:2017-08-30 06:18:06

标签: tensorflow neural-network keras feed-forward

这是我用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

那么为什么在列车数据修复后每次执行结果会发生变化?非常感谢一些解释。

1 个答案:

答案 0 :(得分:7)

训练集是固定的,但是我们将神经网络的初始权重设置为小范围内的随机值,因此每次训练网络时,结果都会略有不同。

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