首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Keras中训练和保存非常大的模型

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

Stack Overflow用户
提问于 2017-05-12 21:50:48
回答 1查看 971关注 0票数 2

我正在Keras中构建一个带有注意力的LSTM模型,用于多标签分类,但有数千个可能的输出标签,每个标签都有自己的sigmoid预测层和唯一的注意力MLP层。有没有可能训练和保存这么大的模型?我得到以下h5py RuntimeError: Unable to create attribute (Object header消息太大)。

EN

回答 1

Stack Overflow用户

发布于 2018-08-12 04:58:16

你可能已经知道HDF5的报头限制。有关更多信息,请查看here

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

代码语言:javascript
复制
for i, m in enumerate(model.layers):
    m.name = 'n' + str(i)

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

代码语言:javascript
复制
dic = {}
for i, m in enumerate(model.layers):
    dic['n' + str(i)] = m.name
    m.name = 'n' + str(i)

然后像这样使用它:

代码语言:javascript
复制
for m in model.layers:
    m.name = dic[m.name]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43939441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档