我正在Keras中构建一个带有注意力的LSTM模型,用于多标签分类,但有数千个可能的输出标签,每个标签都有自己的sigmoid预测层和唯一的注意力MLP层。有没有可能训练和保存这么大的模型?我得到以下h5py RuntimeError: Unable to create attribute (Object header消息太大)。
发布于 2018-08-12 04:58:16
你可能已经知道HDF5的报头限制。有关更多信息,请查看here。
所以我遇到了同样的问题,我用一个小把戏解决了它。在保存之前,将图层的名称更改为一些小字符串。我是这样做的:
for i, m in enumerate(model.layers):
m.name = 'n' + str(i)它起作用了(不要让'n‘把你搞糊涂了。我只希望我的图层名称以字符开头,而不是数字)。注意,层名称应该是唯一的,而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]https://stackoverflow.com/questions/43939441
复制相似问题