当我尝试训练从json config + weights文件加载的预训练模型时,我遇到了问题。
我使用以下代码(简化):
from keras.utils.layer_utils import layer_from_config
with open("config.json", "rb") as f:
config = json.loads(f.read())
model = layer_from_config(config)
model.load_weights("weights.net")
history = model.fit(batch, target, verbose=1,
validation_data=(test_batch, test_target), shuffle=True)
我得到了下面的异常:
theano.gof.fg。MissingInputError:"图形的输入,用于计算DimShuffle{x,x}(keras_learning_phase),没有提供没有给定值。使用Theano标志exception_verbose ='high',for, keras_learning_phase)
我认为这是有意义的,因为我在模型中有dropout层,所以它应该知道当前的学习阶段。我如何将学习阶段设置为"训练"?或者这里可能有不同的问题?
提前感谢!
让我自己来回答这个问题。
此问题仅与keras 1.0.0版本相关,并在1.0.2中修复。所以上面的代码片段完全可以在新版本的keras上工作,不需要显式设置学习阶段。