You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将多个Keras模型的权重存储到单个变量/数组,以便后续调用set_weights?

解决Keras多模型权重存储与复用问题

首先,你原代码的问题在于空列表不能直接通过索引赋值,weights = []初始为空,weights[i]会触发IndexError,因为列表还没有对应索引位置的元素。

正确的权重存储方式

你可以用列表的append()方法逐个添加模型权重:

weights = []
# 假设model是包含3个Keras模型的列表
for mdl in model:
    weights.append(mdl.get_weights())

或者提前初始化一个长度匹配的列表再赋值:

weights = [None] * 3
for i in range(3):
    weights[i] = model[i].get_weights()

model.get_weights()返回的是包含numpy数组的列表,每个数组对应模型中一层的权重/偏置,这种结构可直接被model.set_weights()识别。

后续复用权重的方法

当需要把存储的权重放回模型时,对应索引调用set_weights()即可:

# 给第一个模型恢复权重
model[0].set_weights(weights[0])
# 批量恢复所有模型权重
for i in range(3):
    model[i].set_weights(weights[i])

注意:恢复权重的模型结构必须和存储权重时的模型完全一致(层数量、层类型、输出形状等均需匹配),否则set_weights()会报错。

内容的提问来源于stack exchange,提问作者Nikhil Ostwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 16:46:06