tensorflow - 每次训练模型时结果不同
问题描述
我创建了一个简单的 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**
解决方案
是的,网络的初始权重会随机初始化。要获得可重现的结果,您必须为随机数设置种子。权重的随机初始化基于这个种子。因此,拥有相同的种子将始终导致相同的初始化。
取自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)
种子值当然可以有任意数量,但必须是固定的。
推荐阅读
- javascript - 单击导航中的链接后,更改 Bootstrap .collapsed 以隐藏菜单
- python - 为什么 '==' 在 Python 中出现在 'in' 之前?
- python - 满足条件时消除数据框迭代行
- javascript - 'ActiveXObject' 未定义 no-undef [React-Js]
- sql - SQL - 在嵌套查询中的表之间传输值
- javascript - 根据文档准备好的 URL 参数选择选项和检查复选框的功能
- python - Django:未保存动态表单字段的 CreateView 对象
- time - 流入聚合查询返回错误时间
- android - 如何从 PagedListAdapter 刷新 RecyclerView 中的数据?
- wpf - WPF - Scrollviewer 内的列表框不会滚动项目