Keras Functional API 在每个 API 中更改图层名称
Keras Functional API changing layer names in every API
当我运行模型中的函数API进行k折交叉验证时,在return拟合模型中增加了命名密集层的数字每一次折叠。
就像在第一折中它是 dense_2_acc
,然后在第二折中它是 dense_5_acc
.
通过我的模型总结表明我的模型是正确的。为什么要更改每个折叠的拟合模型 history
对象中的名称?
这是一个非常好的问题,它显示了一些关于 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')
当我运行模型中的函数API进行k折交叉验证时,在return拟合模型中增加了命名密集层的数字每一次折叠。
就像在第一折中它是 dense_2_acc
,然后在第二折中它是 dense_5_acc
.
通过我的模型总结表明我的模型是正确的。为什么要更改每个折叠的拟合模型 history
对象中的名称?
这是一个非常好的问题,它显示了一些关于 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')