考虑一下我有一个经过训练的Keras序列模型的情况。我保存模型,
keras.saving.save_model(model, path, save_format="...")
字符串
然而,在保存之前,我在模型中设置了一个自定义的list[str]
属性:
setattr(model, "custom_attr", ["one", "two", "three"])
型
最后,当我使用keras.saving.load_model
重新加载模型对象(来自另一个项目)时,我希望通过model.custom_attr
使用我的自定义属性。然而,这不起作用,因为重新加载模型后custom_attr不再存在。
有没有办法做到这一点
我查了一下,似乎可以在重新加载模型时指定custom_objects
参数,但该方法似乎仅限于自定义模型类中定义的自定义层或自定义损失函数。我的设置完全不同,因为我有一个普通的Sequential
模型。
2条答案
按热度按时间34gzjxbg1#
我想一个解决方案是用pickle模块单独保存您的自定义属性:
字符串
在重新加载模型之后,也加载这个pickle并设置属性
setattr(model, custom_attr)
mpbci0fu2#
我通过子类化Sequential类并向构造函数添加一个参数来解决这个问题:
字符串