首页 > 解决方案 > 每次训练模型时结果不同

问题描述

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

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 图像

标签: tensorflowmachine-learningkeras

解决方案


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

取自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)

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


推荐阅读