Machine learning 在Keras中冻结某些层的训练时间较慢

Machine learning 在Keras中冻结某些层的训练时间较慢,machine-learning,deep-learning,keras,Machine Learning,Deep Learning,Keras,我有两个结构相同的keras模型。一个是标准DNN,另一个是相同的架构,某些层设置为trainable=False。他们都能得到相当准确的结果\ 我假设具有冻结权重的网络训练速度更快,因为需要调整的参数更少。然而,情况恰恰相反。冻结的网络需要116秒,而解冻的网络需要105秒。为什么会这样?这是Keras模型的开销吗?您是否检查了您的模型是否实际上没有训练层?在编译之前,请确保设置“trainable=False”。你可以在训练前后做一个model.layers[i].get_weights()

我有两个结构相同的keras模型。一个是标准DNN,另一个是相同的架构,某些层设置为
trainable=False
。他们都能得到相当准确的结果\


我假设具有冻结权重的网络训练速度更快,因为需要调整的参数更少。然而,情况恰恰相反。冻结的网络需要116秒,而解冻的网络需要105秒。为什么会这样?这是Keras模型的开销吗?

您是否检查了您的模型是否实际上没有训练层?在编译之前,请确保设置“trainable=False”。你可以在训练前后做一个
model.layers[i].get_weights()
来比较权重是否相同。如果我不断创建新模型并反复训练,我注意到使用keras的时间会有巨大的差异。在我的例子中,我创建了一个模型,并在每个历元中用240秒对其进行训练。虽然我一直在用完全相同的体系结构和相同的数据创建模型,但不同的权重、损耗等,这些模型开始变得越来越慢,每个历元的时间超过400秒所以,事实上,当你创建更多的模型时,keras会减慢速度。(不知道是记忆还是什么…)是的,我检查过了,它被冻结了。有趣的。。。我正在生成多个模型这可能与后端实际发生的情况有关,即Theano/TensorFlow。从高层次的角度来看,很难说GPU上实际执行了哪些计算(我假设它不在CPU上运行),如果您想详细调试问题,这当然需要更仔细的检查。