在Keras训练和保存非常大的模型

问题描述 投票:2回答:1

我正在Keras建立一个LSTM模型,用于多标签分类,但有数千种可能的输出标签,每个标签都有自己的S形预测层和独特的MLP层。是否可以训练和保存这么大的模型?我得到以下h5py RuntimeError:无法创建属性(对象标头消息太大)。

python deep-learning keras
1个回答
1
投票

您可能已经了解HDF5的标头限制。查看here了解更多信息。

所以我遇到了同样的问题,我用一个小技巧解决了它。在保存之前,将图层的名称更改为一些小字符串。我是这样做的:

for i, m in enumerate(model.layers):
    m.name = 'n' + str(i)

它起作用了(不要让你'混淆你。我只是希望我的图层名称以字符开头而不是数字)。请注意,图层名称应该是唯一的,并且str(i)解决了这个问题。如果稍后加载模型后需要图层名称,可以为它们创建字典并将字典保存在文本文件中。加载模型后,从文本文件中读取字典并使用它将当前图层名称映射到原始图层名称。例如,像这样创建字典:

dic = {}
for i, m in enumerate(model.layers):
    dic['n' + str(i)] = m.name
    m.name = 'n' + str(i)

并在以后使用它:

for m in model.layers:
    m.name = dic[m.name]
© www.soinside.com 2019 - 2024. All rights reserved.