每次训练模型时都有不同的结果

时间:2020-10-16 12:48:34

标签: tensorflow machine-learning keras

我创建了一个简单的Keras模型,该模型适合我创建的点,如下图所示。我的问题是,当我运行代码时,我不能总是得到这条红线(也许在5次运行的1次运行中,我得到了期望的结果。在其他4次运行中,我得到了一条直线)。我应该怎么做才能使模型始终合适? 这与randomness

相关吗
model = models.Sequential()
model.add(layers.Dense(2,activation = 'linear'))
model.add(layers.Dense(2,activation = 'relu'))
model.add(layers.Dense(1,activation = 'linear'))

model.compile(loss='mse', optimizer=optimizers.Adam(lr=0.001))

history = model.fit(X,y, epochs=1500, verbose=False)
y_hat = model.predict(X)**strong text**

pyplot image

1 个答案:

答案 0 :(得分:1)

是的,网络的初始权重会随机初始化。为了获得可重现的结果,必须为随机数设置种子。权重的随机初始化基于该种子。因此,拥有相同的种子将始终导致相同的初始化。

取自https://machinelearningmastery.com/reproducible-results-neural-networks-keras/ 即:

from numpy.random import seed
seed(1)
from tensorflow import set_random_seed
set_random_seed(2)

种子值可以有任意数量的过程,但是必须是固定的。