首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ValueError:您在优化器RMSprop上使用长度为3的权重列表调用了`set_weights( weights )`,但优化器预期权重为0

ValueError:您在优化器RMSprop上使用长度为3的权重列表调用了`set_weights( weights )`,但优化器预期权重为0
EN

Stack Overflow用户
提问于 2020-10-03 18:20:30
回答 1查看 734关注 0票数 3

我有一个以'h5‘格式保存的模型。在编译模型之后,我正在尝试恢复训练,并尝试加载优化器的权重。

model.optimizer.set_weights(weights_list)

其中,weights_list是我从h5文件中手动提取的包含优化器权重的numpy数组列表。

但是我得到了上面的错误。

当我尝试model.optimizer.get_weights()时,我得到一个空列表。

我想知道如何初始化优化器权重而没有任何错误。

但是,如果我这样做了

model = tf.keras.model.load_model('~/modelname.h5',custom_objects={},compile=True)

它起作用了,也就是说,我可以用之前保存的权重恢复训练。

然而,tf.keras.models.load_model并不总是有效的,有时它需要构建模型并使用load_weights初始化模型。

EN

回答 1

Stack Overflow用户

发布于 2020-11-12 04:06:18

我自己也遇到了这个。按照this question运行model._make_train_function()为我修复了这个问题。

代码语言:javascript
复制
x = Input((50,))
out = Dense(1, activation='sigmoid')(x)
model = Model(x, out)
model.compile(optimizer='adam', loss='binary_crossentropy')

model.load_weights('weights.h5')
model._make_train_function()
with open('optimizer.pkl', 'rb') as f:
    weight_values = pickle.load(f)
model.optimizer.set_weights(weight_values)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64183141

复制
相关文章

相似问题

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