加载模型后 model.summary() 中的 LSTM 超参数不可用
LSTM hyperparameters not available in model.summary() after loading model
我尝试在使用以下命令后加载 LSTM 模型(由 Keras 创建):
model_json = model.to_json()
with open("model.json", "w") as json_file:
json_file.write(model_json)
使用命令:
json_file = open('model.json', 'r')
loaded_model_json = json_file.read()
json_file.close()
loaded_model = model_from_json(loaded_model_json)
并通过命令打印 lr 和其他超参数:
loaded_model.summary()
我收到了关于LSTM结构的所有信息。但是没有收到lr等超参信息
学习率是模型优化器的一个参数,不包含在 model.summary()
输出中。如果要求学习率的值,可以用模型的optimizer
属性,用K.eval()
求学习率张量,得到它的实际值:
print(K.eval(model.optimizer.lr))
更新:当您使用to_json
方法时,模型的优化器不会被保存,因此上述解决方案不起作用。如果你想保存整个模型,包括层权重和优化器(连同它的状态),你可以使用 save
方法:
model.save('my_model.h5')
然后你可以使用load_model
加载它:
from keras.models import load_model
model = load_model('my_model.h5')
或者,如果您使用 save_weights
方法(保存层的权重)和 to_json
方法(保存 仅 的架构模型),然后您可以在使用 model_from_json
:
加载模型后加载权重
# load the architecture of model from json file ...
# load the weights
model.load_weights('model_weights.h5')
然而,第二种方法中的优化器尚未保存,因此您需要重新编译模型(请注意,这意味着优化器的状态丢失,因此您可能无法轻松地 继续训练模型而不先配置优化器;但是,如果您只想将模型用于预测或重新训练从头开始建模).
我强烈建议您也阅读 Keras FAQ 中的相关部分:How can I save a Keras model?
我尝试在使用以下命令后加载 LSTM 模型(由 Keras 创建):
model_json = model.to_json()
with open("model.json", "w") as json_file:
json_file.write(model_json)
使用命令:
json_file = open('model.json', 'r')
loaded_model_json = json_file.read()
json_file.close()
loaded_model = model_from_json(loaded_model_json)
并通过命令打印 lr 和其他超参数:
loaded_model.summary()
我收到了关于LSTM结构的所有信息。但是没有收到lr等超参信息
学习率是模型优化器的一个参数,不包含在 model.summary()
输出中。如果要求学习率的值,可以用模型的optimizer
属性,用K.eval()
求学习率张量,得到它的实际值:
print(K.eval(model.optimizer.lr))
更新:当您使用to_json
方法时,模型的优化器不会被保存,因此上述解决方案不起作用。如果你想保存整个模型,包括层权重和优化器(连同它的状态),你可以使用 save
方法:
model.save('my_model.h5')
然后你可以使用load_model
加载它:
from keras.models import load_model
model = load_model('my_model.h5')
或者,如果您使用 save_weights
方法(保存层的权重)和 to_json
方法(保存 仅 的架构模型),然后您可以在使用 model_from_json
:
# load the architecture of model from json file ...
# load the weights
model.load_weights('model_weights.h5')
然而,第二种方法中的优化器尚未保存,因此您需要重新编译模型(请注意,这意味着优化器的状态丢失,因此您可能无法轻松地 继续训练模型而不先配置优化器;但是,如果您只想将模型用于预测或重新训练从头开始建模).
我强烈建议您也阅读 Keras FAQ 中的相关部分:How can I save a Keras model?