猿问

keras.backend 的 clear_session() 方法没有清理拟合数据

我正在比较不同类型数据质量的拟合精度结果。“好数据”是特征值中没有任何 NA 的数据。“坏数据”是特征值中具有 NA 的数据。应该通过一些值校正来修复“坏数据”。作为值校正,它可能会用零或平均值替换 NA。


在我的代码中,我试图执行多个拟合程序。


查看简化的代码:


from keras import backend as K

...


xTrainGood = ... # the good version of the xTrain data 


xTrainBad = ... #  the bad version of the xTrain data


...


model = Sequential()


model.add(...)


...


historyGood = model.fit(..., xTrainGood, ...) # fitting the model with 

                                              # the original data without

                                              # NA, zeroes, or the feature mean values


根据historyGood数据查看拟合精度图:

之后,代码重置存储的模型并使用“坏”数据重新训练模型:


K.clear_session()


historyBad = model.fit(..., xTrainBad, ...)

根据historyBad数据查看拟合过程结果:

http://img3.mukewang.com/62bab7b10001a66607480523.jpg

可以注意到,初始精度> 0.7,这意味着模型“记住”了之前的拟合。

为了比较,这是“坏”数据的独立拟合结果:

http://img4.mukewang.com/62bab7be0001970807460527.jpg

如何将模型重置为“初始”状态?



皈依舞
浏览 400回答 3
3回答

慕运维8079593

K.clear_session()不足以重置状态并确保可重复性。您还需要:设置(和重置)随机种子重置 TensorFlow 默认图删除以前的模型完成以下各项的代码。reset_seeds()model = make_model() # example function to instantiate modelmodel.fit(x_good, y_good)del modelK.clear_session()tf.compat.v1.reset_default_graph()reset_seeds()model = make_model()model.fit(x_bad, y_bad)请注意,如果其他变量引用模型,您也应该使用del它们 - 例如model = make_model(); model2 = model--> del model, model2- 否则它们可能会持续存在。最后,tf随机种子不像random's 或numpy's 那样容易重置,并且需要事先清除图形。使用的功能/模块:import tensorflow as tfimport numpy as npimport randomimport keras.backend as Kdef reset_seeds():    np.random.seed(1)    random.seed(2)    if tf.__version__[0] == '2':        tf.random.set_seed(3)    else:        tf.set_random_seed(3)    print("RANDOM SEEDS RESET")

狐的传说

您K.clear_session()以错误的方式使用,要获得具有随机初始化权重的模型,您应该删除旧模型(使用del关键字),然后继续创建一个新模型,并对其进行训练。您可以K.clear_session()在每次安装程序后使用。

侃侃尔雅

实例化一个新的同名模型对象还不够?model = make_model()
随时随地看视频慕课网APP

相关分类

Python
我要回答