【发布时间】:2018-08-18 13:37:43
【问题描述】:
当我在模型中运行函数式 API 进行 k 折交叉验证时,命名密集层的数字在每个折的返回拟合模型中都会增加。
就像在第一折中是dense_2_acc,然后在第二折中是dense_5_acc。
通过我的模型摘要显示我的模型是正确的。为什么要更改每个折叠的拟合模型history 对象中的名称?
【问题讨论】:
标签: python keras model neural-network keras-layer
当我在模型中运行函数式 API 进行 k 折交叉验证时,命名密集层的数字在每个折的返回拟合模型中都会增加。
就像在第一折中是dense_2_acc,然后在第二折中是dense_5_acc。
通过我的模型摘要显示我的模型是正确的。为什么要更改每个折叠的拟合模型history 对象中的名称?
【问题讨论】:
标签: python keras model neural-network keras-layer
这是一个非常好的问题,它显示了关于keras 的一些非常重要的事情。名称以这种方式更改的原因是 keras 即使在您覆盖模型时也不会清除先前定义的变量。您可以通过调用轻松检查变量是否仍在session.graph 中:
from keras import backend as K
K.get_session().graph.get_collection('variables')
为了清除以前的模型变量,可以调用:
K.clear_session()
但是 - 请小心 - 因为您可能会丢失现有模型。如果您想保持名称相同,您可以通过在层实例化中添加 name 参数来简单地命名您的层,例如:
Dense(10, activation='softmax', name='output')
【讨论】: